我正在为我的应用程序制作一个相当基本的主菜单屏幕,我从左侧滑入两个按钮,并通过提升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;我没想到滑动按钮的轻型动画会很麻烦吗?如果是这样的话,为什么它能顺利地在劣质平板电脑上工作仍然没有意义。
答案 0 :(得分:0)
我的猜测与高端手机的os版本有关,默认情况下未设置为使用硬件加速。将此添加到您的清单:
android:hardwareAccelerated="true"
在您尝试制作动画的活动中。