【问题标题】:Android animation is laggy \ slow with backgroundAndroid动画滞后\背景缓慢
【发布时间】:2013-12-01 00:27:09
【问题描述】:

我想制作一些非常小的动画来尝试一下......但是:

动画完美无背景。

当我设置主布局的背景时,动画超级滞后\缓慢,帧速率非常低。

这是我的代码:

主要片段:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- android:background="@drawable/backgroundhotpink"  -->


<ImageView
    android:id="@+id/flickit"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="83dp"
    android:src="@drawable/switch_on" />

<TextView
    android:id="@+id/message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="24dp"
    android:text="message"
    android:textSize="30sp" 
    android:typeface="sans" />

<TextView
    android:id="@+id/score"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/message"
    android:layout_alignBottom="@+id/message"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="44dp"
    android:gravity="center"
    android:rotation="-45"
    android:text="0"
    android:textSize="23sp" />

<Button
    android:id="@+id/startStopGame"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="15dp"
    android:text="Start Game" />

<ImageView
    android:id="@+id/socketImageview"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_below="@+id/flickit"
    android:layout_centerHorizontal="true"
    android:src="@drawable/socket" />

<TextView
    android:id="@+id/timer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="Time"
    android:layout_margin="5dp"
    android:textAppearance="?android:attr/textAppearanceMedium" />

动画:

<?xml version="1.0" encoding="utf-8"?>


  <set android:shareInterpolator="false"                   
xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:fromXScale="1.0"
    android:toXScale="1.4"
    android:fromYScale="1.0"
    android:toYScale="0.6"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fillAfter="false"
    android:duration="300" />

</set>

动画同步任务:

protected Void doInBackground(View... params) {
    final View v = params[0];
    myHandler.post(new Runnable() {
        public void run() {

            v.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.scale_back_fowrad));

        }
    });
    return null;


}

【问题讨论】:

  • 我没有发现任何问题。您是在模拟器还是物理设备上看到这种“滞后”?
  • 物理设备。 HTC 一个。

标签: android animation android-asynctask


【解决方案1】:

由于您用于背景的图像的大小和格式,会出现此问题。请执行以下操作以避免此问题:

  1. 保持图像大小小于 500 kb
  2. 图片使用 png 格式

【讨论】:

    【解决方案2】:

    确保您的图片为 PNG 格式。

    【讨论】:

      【解决方案3】:

      如果正在运行资源密集型动画并且视图的内容正在发生变化,最好通过设置一个值而不是 wrap content 来优化布局中视图的大小。这样,每次绘制视图时都不必计算视图测量计算。

      【讨论】:

        【解决方案4】:

        我有一个比更改图像格式更好的选择。如果您使用图像,则以 mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi 模式生成图像并添加到项目中。这是android动画变得滞后的真正原因。尝试使用 Adob​​e XD 之类的工具以不同的模式导出图像并将它们添加到正确的可绘制文件夹中。

        这些是 mdpi、hdpi、..... 文件夹

        【讨论】:

          猜你喜欢
          • 2013-07-28
          • 1970-01-01
          • 2017-07-18
          • 2015-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多