小编Lee*_*elo的帖子

Android - 使用动画更改左边距

我正在以下列方式更改图像视图的左边距:

ViewGroup.MarginLayoutParams layoutParams = (MarginLayoutParams) image.getLayoutParams ();
layoutParams.leftMargin = VALUE;
image.setLayoutParams ( layoutParams );
Run Code Online (Sandbox Code Playgroud)

我希望保证金的变化适用于动画.有线索吗?

我尝试了什么:

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat ( image , "x" , VALUE);
objectAnimator.start();
Run Code Online (Sandbox Code Playgroud)

这很有效,因为图像通过动画移动到指定的X值,但是layoutParams.leftMargin的值保持不变!! 所以我不能使用这种方法,因为如果我在使用值为100 的objectAnimator后尝试将layoutParams.leftMargin的值更改为100,则应用的值不正确(应用200而不是100,如果objectAnimator仍然存在效果eventHough我以下列方式设置左边距:

layoutParams.leftMargin = 100;
Run Code Online (Sandbox Code Playgroud)

android android-animation

54
推荐指数
3
解决办法
4万
查看次数

Android唯一序列号

我正在开发一个针对Android 4.0(API 14)及更高版本的Android应用程序.

我正在寻找一个每个设备唯一的序列号,并且这个序列号永远存在(与设备一起死亡,在出厂重置后不会改变).

我在网上发现了很多关于Android设备的唯一标识符的结果,但在android.os.Build.SERIAL数字上却很少.

到目前为止,我已经消除了ANDROID_ID的使用,因为它可能会在出厂重置后发生变化.我也消除了IMEI的使用,因为Android设备可能是非手机的.我无法使用wifi或蓝牙MAC ADDRESS,因为如果未启用硬件(基于我在网络上找到的内容),设备可能没有这样的硬件和/或这样的mac地址可能无法读取.

我相信我可能会去Android设备序列号.

可以使用android.os.Build.SERIAL轻松访问它(因为它是在API级别9中添加的,不需要任何其他权限).

我的问题是:

  • 考虑到我的应用程序针对Android 4.0(API 14)及更高版本,是每个设备唯一的android设备的android.os.Build.SERIAL号码吗?

  • 目前,android.os.Build.SERIAL的文档指示:硬件序列号(如果可用).仅限字母数字,不区分大小写. 这是否意味着序列号可能不可用?

  • 什么是满足上述条件的另一种替代方案?

android serial-number uniqueidentifier

52
推荐指数
3
解决办法
5万
查看次数

Android - 活动娱乐期间是否保留了意图?

我正在构建一个Android应用程序,并且想询问是否在活动重新创建期间(例如设备方向)保存/保存了启动活动的意图(可通过getIntent()方法访问),或者只是知道android可以擦除应用程序状态,如果它在后台并重建它(如果内存不足)?

这是一个简单的例子,说明了这个问题:

在应用程序启动活动.然后,用户单击启动新活动B的按钮.活动A通过意图(使用putExtra方法)向活动B发送了一个字符串X,其值为Hello.

在活动B中,我可以通过检索intent(通过getIntent()方法)然后检索字符串内容(通过getStringExtra方法)来检索字符串X的内容.

如果由于设备轮换而重新创建活动,我是否仍然可以从intent中检索额外的字符串,甚至是意图本身... ...?

或者我应该在onSaveInstanceState方法中保存额外的字符串?

我已经尝试过设备旋转场景,并且始终可以访问intent(以及额外的字符串).

android android-intent

23
推荐指数
1
解决办法
3182
查看次数

Android AsyncTask - 执行顺序

我正面临着关于AsyncTasks执行顺序的问题.

我的问题是:

假设我有2个AsyncTask实现:MyAsyncTask1MyAsyncTask2

以下列方式调用:

new MyAsyncTask1 ().execute ();
new MyAsyncTask2 ().execute ();
Run Code Online (Sandbox Code Playgroud)

是否保证MyAsyncTask1MyAsyncTask2之前执行?有一点可以肯定,它们并不是并行执行的,因为使用了默认执行程序,即SERIAL_EXECUTOR.问题在于执行的顺序:哪个将首先执行?

如果未确定执行顺序,我如何强制执行A​​syncTasks的执行顺序?

我需要的是有MyAsyncTask1之前执行MyAsyncTask2,这是情况并非总是如此沉绵我呼吁执行对MyAsyncTask1之前MyAsyncTask2.

我实际拥有的是自定义活动:

public abstract class CustomActivity extends Activity {

    @Override
    protected void onCreate ( Bundle savedInstanceState ) {
        super.onCreate ( savedInstanceState );
        new MyAsyncTask2 ().execute ();
    }
}
Run Code Online (Sandbox Code Playgroud)

以及从自定义活动继承的另一个活动:

public class MainActivity extends CustomActivity {

    @Override
    protected void onCreate ( Bundle savedInstanceState ) {
        new MyAsyncTask1 ().execute ();
        super.onCreate …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

11
推荐指数
1
解决办法
4591
查看次数

Android活动过渡动画

我想要实现的是:针对退出活动启动带有过渡动画的新活动.

我想升级当前活动,新活动将落后于当前活动.

这是滑动动画:R.layout.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="1000"
        android:fromYDelta="0%"
        android:toYDelta="100%" />

</set>
Run Code Online (Sandbox Code Playgroud)

以下是我应用活动动画过渡的方法:

overridePendingTransition ( 0 , R.anim.slide_up );
Run Code Online (Sandbox Code Playgroud)

我正在使用0进行输入活动,因为我不想为新活动添加任何动画,并且它不起作用(不执行动画).如果我也使用动画来输入活动,它可以工作(两个动画都会执行),如下所示:

overridePendingTransition ( R.anim.slide_out , R.anim.slide_up );
Run Code Online (Sandbox Code Playgroud)

其中R.anim.slide_out:

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="1000"
        android:fromYDelta="100%"
        android:toYDelta="0%" />

</set>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

我正在使用Android 4.1.2和Android 4.0.4

android android-animation android-activity

10
推荐指数
1
解决办法
1万
查看次数

在NumberPicker中阻止最小值和最大值之间的转换

我正在开发一个Android应用程序.在某处,我正在显示NumberPicker小部件.

如何禁用最小值和最大值之间的转换?

我的意思是,我使用数字选择器,最小值为0,最大值为9999.看起来像这样,

号码选择器

通过这种方式,用户可以快速将小部件从0跳转到9999.我不希望出现这种情况.数字选择器小部件现在看起来像一个封闭的圆圈,我试图看看如何在最小值和最大值之间准确地打破圆圈,以便它从最小值和最大值看起来像这样:

数字选择器最小值 数字选择器最大值

我怎样才能做到这一点?

我尝试过的:

  • 我在NumberPickerAPI中到处搜索,似乎这不是人们可以使用方法设置的东西.
  • 我认为我可以使用方法setDisplayedValues(String[] displayedValues)方法在最小值之前和最大值之后添加空字符串,这样在最小值之前或最大值之后不会显示任何值,但是用户仍然可以通过它们或者WORSE:选择空值.

有任何想法吗?我是否必须弄脏手,并深入了解小部件实现?触摸听众内部可能吗?

android numberpicker

10
推荐指数
2
解决办法
3286
查看次数

如何在Android中更改菜单主题

我的android应用程序使用以下样式:

<style name="AppTheme"
parent="android:style/Theme.Holo" ></style>
Run Code Online (Sandbox Code Playgroud)

它是在AndroidManifest.xml文件中为整个应用程序分配的:

<application
    android:theme="@style/AppTheme"
    [...]
Run Code Online (Sandbox Code Playgroud)

使用此样式,菜单如下所示:

在此输入图像描述

但是,如果我使用灯光主题:

<style name="AppTheme"
parent="android:style/Theme.Light" ></style>
Run Code Online (Sandbox Code Playgroud)

菜单将如下所示:

在此输入图像描述

我的问题是:

如何将HOLO主题应用于整个应用程序,并仅使用LIGHT主题菜单?

我只想应用LIGHT主题的对话框"style",并将HOLO主题应用于其他所有内容.

android android-menu android-theme

7
推荐指数
1
解决办法
7348
查看次数

Android GreenDao - 仅删除特定实体的缓存对象

我在我的Android应用程序中使用GreenDao ORM.

如前所述在这里,人们可以使用

DaoSession.clear();
Run Code Online (Sandbox Code Playgroud)

为了清除会话的所有缓存对象.

我的问题是:如何清除特定实体(而不是全部)的缓存对象?我怎样才能做到这一点 ?

orm android greendao

7
推荐指数
1
解决办法
3417
查看次数