android实现点赞动画

想让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坐标上的位置

详细参考如下:

 <!-- 

  Tween Animation :通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果。     
                
                Alpha :渐变透明度动画效果     
                Scale :渐变尺寸伸缩动画效果     
                Translate :画面转换位置移动动画效果     
                Rotate :画面旋转动画效果     
                    
                Tween Animation  通用属性 [ 类型 ]          功能         
                        Duration[long]     属性为动画持续时间       时间以毫秒为单位     
                        fillAfter [boolean]  当设置为 true  ,该动画转化在动画结束后被应用     
                        fillBefore[boolean]  当设置为 true  ,该动画转化在动画开始前被应用     
                            
                        interpolator         指定一个动画的插入器      有一些常见的插入器     
                        accelerate_decelerate_interpolator    
                         加速 - 减速  动画插入器     
                        accelerate_interpolator    
                         加速 - 动画插入器     
                        decelerate_interpolator    
                         减速 -  动画插入器     
                         其他的属于特定的动画效果     
                        repeatCount[int]         动画的重复次数      
                        RepeatMode[int]  定义重复的行为  1 :重新开始     2 plays backward    
                        startOffset[long]      动画之间的时间间隔,从上次动画停多少时间开始执行下个动画     
                        zAdjustment[int]         定义动画的 Z Order 的改变  0 :保持 Z Order 不变     
                        1 :保持在最上层     
                        -1 :保持在最下层     
          -->    

        <!-- 
         尺寸伸缩动画效果 scale    

                属性:interpolator 指定一个动画的插入器    
    
                有三种动画插入器   
                 accelerate_decelerate_interpolator    加速-减速 动画插入器    
                 accelerate_interpolator                加速-动画插入器    
                 decelerate_interpolator                减速- 动画插入器    
    
                其他的属于特定的动画效果    
                        fromXScale 属性为动画起始时 X坐标上的伸缩尺寸            
                        toXScale     属性为动画结束时 X坐标上的伸缩尺寸             
    
                        fromYScale 属性为动画起始时Y坐标上的伸缩尺寸            
                        toYScale     属性为动画结束时Y坐标上的伸缩尺寸            
    
                        说明   
                                        以上四种属性值            
                                        0.0表示收缩到没有     
                                        1.0表示正常无伸缩             
                                        值小于1.0表示收缩        
                                        值大于1.0表示放大    
                                            
                        pivotX         属性为动画相对于物件的X坐标的开始位置    
                        pivotY         属性为动画相对于物件的Y坐标的开始位置    
                        
             说明   
                                        以上两个属性值 0%-100%中取值    
                                        50%为物件的XY方向坐标上的中点位置    
                长整型值:    
                        duration    属性为动画持续时间    
                        说明    时间以毫秒为单位    
    
                布尔型值   
                        fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用    
        --> 

        <!--     
                画面转换位置移动动画效果 translate    
            
                fromXDelta toXDelta 为动画、结束起始时 X坐标上的位置         
                fromYDelta toYDelta 为动画、结束起始时 Y坐标上的位置    
         -->    

         <!--     
                画面转移旋转动画效果 rotate    
                    
                fromDegrees 为动画起始时物件的角度 说明    
                        当角度为负数——表示逆时针旋转    
                        当角度为正数——表示顺时针旋转    
                        (负数from——to正数:顺时针旋转   
                        (负数from——to负数:逆时针旋转   
                        (正数from——to正数:顺时针旋转   
                        (正数from——to负数:逆时针旋转   
                        toDegrees     属性为动画结束时物件旋转的角度 可以大于360    
                pivotX    
                pivotY    为动画相对于物件的XY坐标的开始位    说明:以上两个属性值 0%-100%中取值    
                50%为物件的XY方向坐标上的中点位置    
         -->    

微笑说了这么久,接下来看看我们的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



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值