Android视图动画补间浪漫/生涩

时间:2014-09-17 23:03:39

标签: android xml animation view

我正在为我的应用程序制作一个相当基本的主菜单屏幕,我从左侧滑入两个按钮,并通过提升alpha来弹出一个imageview。到目前为止,我已经完成了这个,但所有的动画都非常生涩/不稳定,我使用的调整似乎无法修复它。

奇怪的是,动画在我的10"平板电脑,但在我的新手机上,动画是生涩的。我对所有设备使用完全相同的图像(在可绘制文件夹中,还没有特殊的高分辨率版本)所有滑动按钮和图像视图的图像都小于100k的PNG,都有透明胶片。

基本上,我试图找出如何平滑这些动画,以及为什么它们在我的旧平板电脑上会如此柔滑,但在新手机上会生涩。我的平板电脑完美运行是三星Galaxy Tab 2 10.1"动画不稳定的我的手机是Google Nexus 4和Nexus 5.

动画XML 1:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
 android:interpolator="@android:anim/accelerate_interpolator" 
 android:duration="700"
 android:repeatCount="0"/>
</set>

第二个动画XML:

<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="-100%" android:toXDelta="0%"  android:duration="1000"  />
</set>

主菜单的XML模板:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/menuimage1med"
android:orientation="vertical"
android:scrollbarStyle="outsideOverlay"
tools:context=".MainActivity" >

     <ImageView
        android:id="@+id/menu_mask"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/menumask1" 
        android:scaleType="fitXY"/>

     <RelativeLayout
      android:id="@+id/relativeLayout1"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical" >

     <Button
        android:id="@+id/menuButton3"
        android:layout_width="140dp"
        android:layout_height="75dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/menuButton1"
        android:layout_marginTop="5dp"
        android:background="@drawable/extrasbutton" />


     <Button
        android:id="@+id/menuButton1"
        android:layout_width="170dp"
        android:layout_height="90dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/menuButton2"
        android:background="@drawable/continuebutton" />

     <Button
        android:id="@+id/menuButton2"
        android:layout_width="fill_parent"
        android:layout_height="120dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/newstory" /> 
    </RelativeLayout>

   <Button
    android:id="@+id/musicButton"
    android:layout_width="65dp"
    android:layout_height="65dp"
    android:layout_alignParentBottom="true"
    android:layout_alignRight="@+id/relativeLayout1"
    android:background="@drawable/musicicon" />

</RelativeLayout>

我的代码:

    //Main Menu view animations  
    ImageView imageView= (ImageView)findViewById(R.id.menu_mask);
    Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in);
    imageView.startAnimation(fadeInAnimation); 

    Button menuButton1 = (Button) findViewById(R.id.menuButton1);
    Button menuButton3 = (Button) findViewById(R.id.menuButton3);

    Animation flyInAnimation = AnimationUtils.loadAnimation(this, R.anim.fly_in);
    menuButton1.startAnimation(flyInAnimation);
    menuButton3.startAnimation(flyInAnimation);

此代码不在onCreate方法中,因为我知道这可能会导致潜在问题。

编辑:我检查了Logcat,当返回主菜单并播放动画时,它说“跳过56帧”!应用程序可能在其主线程上做了太多工作。&#39;我没想到滑动按钮的轻型动画会很麻烦吗?如果是这样的话,为什么它能顺利地在劣质平板电脑上工作仍然没有意义。

1 个答案:

答案 0 :(得分:0)

我的猜测与高端手机的os版本有关,默认情况下未设置为使用硬件加速。将此添加到您的清单:

android:hardwareAccelerated="true"

在您尝试制作动画的活动中。