Android学习笔记--动画特效

直接上代码,有事先不多写,以后在补

MainActivity

  1 package com.wuxianedu.animation;
  2
  3 import android.support.annotation.AnimRes;
  4 import android.support.v7.app.AppCompatActivity;
  5 import android.os.Bundle;
  6 import android.view.View;
  7 import android.view.animation.AlphaAnimation;
  8 import android.view.animation.Animation;
  9 import android.view.animation.AnimationSet;
 10 import android.view.animation.AnimationUtils;
 11 import android.view.animation.RotateAnimation;
 12 import android.view.animation.ScaleAnimation;
 13 import android.view.animation.TranslateAnimation;
 14 import android.widget.CompoundButton;
 15 import android.widget.ImageView;
 16 import android.widget.Switch;
 17
 18 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 19
 20     private ImageView imgView;
 21     private boolean isCheched = true;
 22
 23     @Override
 24     protected void onCreate(Bundle savedInstanceState) {
 25         super.onCreate(savedInstanceState);
 26         setContentView(R.layout.activity_main);
 27
 28
 29         Switch switch1 = (Switch) findViewById(R.id.switch1);
 30         switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 31             @Override
 32             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
 33                 MainActivity.this.isCheched = isChecked;
 34             }
 35         });
 36
 37
 38         findViewById(R.id.button).setOnClickListener(this);
 39         findViewById(R.id.button2).setOnClickListener(this);
 40         findViewById(R.id.button3).setOnClickListener(this);
 41         findViewById(R.id.button4).setOnClickListener(this);
 42         findViewById(R.id.button5).setOnClickListener(this);
 43         imgView = (ImageView) findViewById(R.id.imageView);
 44     }
 45
 46
 47     @Override
 48     public void onClick(View v) {
 49         switch (v.getId()){
 50             case R.id.button://渐变透明动画
 51                 if(isCheched){
 52                     alphaJava();
 53                 }else{
 54                     loadByXml(R.anim.alpha_animation);
 55                 }
 56                 break;
 57             case R.id.button2://缩放动画
 58 //                ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1);
 59 //                scaleJava();
 60                 loadByXml(R.anim.scal_animation);
 61                 break;
 62             case R.id.button3://位移动画
 63 //                translateJava();
 64                 loadByXml(R.anim.translate_animation);
 65                 break;
 66             case R.id.button4://旋转动画
 67 //                rotateJava();
 68                 loadByXml(R.anim.rotate_animation);
 69                 break;
 70             case R.id.button5://动画集
 71                 AnimationSet animationSet = new AnimationSet(true);
 72
 73                 //创建三个动画
 74                 RotateAnimation rotateAnimation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,
 75                         Animation.RELATIVE_TO_SELF,0.5f);
 76                 ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,
 77                         Animation.RELATIVE_TO_SELF,0.5f);
 78                 TranslateAnimation translateAnimation = new TranslateAnimation(0,800,0,800);
 79
 80                 //将动画添加到动画集中
 81                 animationSet.addAnimation(rotateAnimation);
 82                 animationSet.addAnimation(scaleAnimation);
 83                 animationSet.addAnimation(translateAnimation);
 84
 85                 //设置时长
 86                 animationSet.setDuration(3000);
 87
 88                 //启动动画
 89                 imgView.startAnimation(animationSet);
 90                 break;
 91         }
 92     }
 93
 94     /**
 95      * 位移动画
 96      */
 97     private void translateJava() {
 98         TranslateAnimation translateAnimation = new TranslateAnimation(0,800,0,800);
 99         translateAnimation.setDuration(3000);
100         imgView.startAnimation(translateAnimation);
101     }
102
103     /**
104      * 旋转动画
105      */
106     private void rotateJava() {
107         RotateAnimation rotateAnimation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,
108                 Animation.RELATIVE_TO_SELF,0.5f);
109         rotateAnimation.setDuration(3000);
110         imgView.startAnimation(rotateAnimation);
111     }
112
113     /**
114      * 缩放动画
115      */
116     private void scaleJava() {
117         ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,
118                 Animation.RELATIVE_TO_SELF,0.5f);
119         scaleAnimation.setDuration(3000);
120         imgView.startAnimation(scaleAnimation);
121     }
122
123     /**
124      * 通过XMl加载动画
125      * @param resId 动画资源,布局文件
126      */
127     private void loadByXml(@AnimRes int resId) {
128         Animation animation = AnimationUtils.loadAnimation(this,resId);
129         imgView.startAnimation(animation);
130     }
131
132     /**
133      * 渐变透明动画
134      */
135     private void alphaJava(){
136         AlphaAnimation alphaAnimation = new AlphaAnimation(1,0);
137         alphaAnimation.setDuration(3000);
138         imgView.startAnimation(alphaAnimation);
139     }
140 }
时间: 2024-10-27 07:28:27

Android学习笔记--动画特效的相关文章

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

【转】 Pro Android学习笔记(四二):Fragment(7):切换效果

目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transaction进行切换,很方便提供切换的效果. 利用setTransition() 在Pro Android学习笔记(三九):Fragment(4):基础小例子-续的“Step 4:实现showDetail(int index),如何管理fragment”中,介绍了如何在容器FrameLayout中通过frag

Android学习笔记二十之Toast吐司、Notification通知、PopupWindow弹出窗

Android学习笔记二十之Toast吐司.Notification通知.PopupWindow弹出窗 Toast吐司 Toast吐司是我们经常用到的一个控件,Toast是AndroidOS用来显示消息的一种机制,它与Dialog不同,Toast不会获取到焦点,通常显示一段时间之后就会自动消失,下面我们来介绍Toast的几种常用方式: 第一种,默认显示方式,也是最常用的方式: Toast.makeText(MainActivity.this, "这是默认的显示方式", Toast.LE

Android学习笔记——关于onConfigurationChanged

从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidManifest.xml申明Activity的广告SDK都会要求加上注明这么一句属性: android:configChanges="orientation|keyboard|keyboardHidden" 通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChan

Android学习笔记18:自定义Seekbar拖动条式样

Android学习笔记18:自定义Seekbar拖动条式样

Pro Android学习笔记(三三):Menu(4):Alternative菜单

什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供.我们将相关信息存储在一个intent中,例如该文本的Uri.这个intent可以匹配系统的多个应用,替代菜单将这些应用一一列出,菜单项的title就是该可被调用的activity的名字,图标也为该可被调用的activity的图表. 小例子说明 我们通过一个小例子进行学习,简单地打开一个URL:we

Android学习笔记(二二): 多页显示-Tag的使用

在手机屏幕中,Tab也是比较常用的,通常和List结合,例如我们手机的通信录.下面是Tag的结构. TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout.TabWidget就是每个tab的标签,FrameLayout则是tab内容. 如果我们使用extends TabAcitivty,如同ListActivity,TabHost必须设置为@android:id/tabhost TabWidget必须设置android:id为@android:id/tabs F

android学习笔记--android启动过程之init.rc文件浅析

1.  init.rc文件结构文件位置:init.c  : /system/core/initinit.rc  : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on.service.import.我们可以看下init.rc文件是怎么写的:1.import import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc 上面的内容

android学习笔记——利用BaseAdapter生成40个列表项

RT: main.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="vertical"