想让APP给人一个好的映像,无非使自己实现的功能更加炫丽!!
接下来给大家介绍下点赞的一个动画效果:
接下来看看是如何实现的:
简单布局如下:
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.wg.demo.MainActivity"
android:background="@android:color/white" >
<ImageView
android:id="@+id/id_hand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_hand"
android:layout_centerInParent="true"
/>
</RelativeLayout>
动画所需要的文件welcome_loading.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="false" >
<translate
android:duration="1200"
android:fillAfter="true"
android:fromYDelta="0.0"
android:interpolator="@android:anim/linear_interpolator"
android:toYDelta="-15%p"
/>
<scale
android:duration="1200"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="0%"
android:toXScale="1.2"
android:toYScale="1.2" />
<rotate
android:duration="200"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="0%"
android:startOffset="1000"
android:toDegrees="30" />
<rotate
android:duration="400"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="0%"
android:startOffset="1200"
android:toDegrees="-60" />
<rotate
android:duration="400"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="0%"
android:startOffset="1600"
android:toDegrees="60" />
<rotate
android:duration="600"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="0%"
android:startOffset="2000"
android:toDegrees="-30" />
<translate
android:duration="600"
android:fromYDelta="0.0"
android:interpolator="@android:anim/linear_interpolator"
android:startOffset="2000"
android:toYDelta="18%p" />
<scale
android:duration="600"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="0%"
android:toXScale="0.833"
android:toYScale="0.833"
android:startOffset="2000" />
</set>
这里的android:fillAfter="false"指的是动画结束是画面停留在此动画的最后一帧;使用时注意:xml设置在scale标签里面设置时无效的,注意是set标签。
android:duration="600"是指显示的持续时间;
android:fromYDelta="0.0"是指动画起始时Y坐标上的位置
android:interpolator="@android:anim/linear_interpolator"是指动画的进度使用interpolater控制变化速度,即包括实现匀速,加速,减速,无规则变加速等等
android:toYDelta="-15%p"是指动画结束时Y坐标上的位置
详细参考如下:
说了这么久,接下来看看我们的activity是这样的:
public class MainActivity extends Activity {
private ImageView handImage;
private Animation animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
handImage = (ImageView) findViewById(R.id.id_hand);
animation = AnimationUtils.loadAnimation(this, R.anim.welcome_loading);
}
@Override
protected void onResume() {
super.onResume();
handImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
handImage.startAnimation(animation);
}
});
}
}
好了,就这样决绝啦!!
资源下载地址:
http://download.csdn.net/detail/hehaiminginadth/8800479
参考链接:
http://blog.sina.com.cn/s/blog_4e60b09d0100q887.html