Android动画是滞后\慢背景

时间:2013-12-01 00:27:09

标签: android animation android-asynctask

我想动画一些非常小的东西,试试吧......但是:

动画完美无背景。

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

这是我的代码:

主要片段:

<?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>

动画SyncTask:

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;


}

4 个答案:

答案 0 :(得分:1)

由于您用于背景的图像的大小和格式,会出现此问题。请遵循以避免此问题:

  1. 保持图像尺寸小于500 kb
  2. 对图像使用png格式

答案 1 :(得分:0)

确保您的图片为PNG格式。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

与更改图像格式相比,我有更好的选择。如果使用图像,则以mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi模式生成图像并添加到项目中。这是android动画变慢的真正原因。尝试使用Adobe XD之类的工具以不同的模式导出图像,并将其添加到正确的可绘制文件夹中。

这些是mdpi,hdpi,.....文件夹
These are the mdpi, hdpi,..... folders