玩转Android---2D图形及动画---Tween动画
2015-07-30 19:38
579 查看
原址:http://hualang.iteye.com/category/143855
Android平台提供了两类动画,分别是Tween动画,和Frame动画。Tween通过场景里的对象不断的进行图片的变换,比如平移、渐变、缩放、旋转等来产生动画效果;Frame动画叫做顺序播放实现做好的图像和电影类似。另外加上gif动画,因为如果直接使用Bitmap或其他方法直接调用gif图片资源的话,显示的是静态的,如果要做成动态的,就需要一些其他的方法来实现。
首先来谈谈Tween动画,它有四种
①Alpha:渐变透明度动画
②Scale:渐变尺寸伸缩动画
③Translate:画面转换位置移动动画
④Rotate:画面转移旋转动画
这些动画的执行步骤差不多:先定义Animation动画对象,然后设置动画的一些属性,最后通过startAnimation()方法开始动画。
setDuration(long durationMillis);
功能:设置动画显示的时间
参数:durationMillis为动画显示时间的长短,以毫秒为单位
startAnimation(Animation animation)
功能:animation为要播放的动画
参数:animation为要播放的动画
第一种:AlphaAnimation(float fromAlpha, float toAlpha)
功能:创建一个透明度渐变的动画
参数说明:fromAlpha是动画起始时透明度;toAlpha是动画结束时透明度
注:0.0表示完全透明,1.0表示完全不透明
实现它有两种方式。
1、直接在程序中创建动画
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
//创建Alpha动画
Animation alpha = new AlphaAnimation(0.1f, 1.0f);
//设置动画时间为5秒
alpha.setDuration(5000);
//开始播放
img.startAnimation(alpha);
2、通过XML来创建动画
alpha_anim.xml。在res/anim目录下
Xml代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="5000">
</alpha>
</set>
程序中直接调用
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation scale = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
//开始动画
img.startAnimation(scale);
效果:
![](http://dl.iteye.com/upload/attachment/527717/8427f4b6-e790-3784-b857-eeb99636c16d.gif)
![](http://dl.iteye.com/upload/attachment/527719/70a9d62a-7249-31da-a094-ce53f1fd03f8.gif)
第二种:ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, floatXValue,
int pivotYType, float pivotYValue)
功能:创建一个渐变尺寸伸缩动画
参数:fromX,toX分别是起始和结束时x坐标上的伸缩尺寸。fromY,toY分别是起始和结束时ye坐标上的伸缩尺寸。
pivotXValue,pivotYValue分别为伸缩动画相对于x,y坐标开始的位置,pivotXType,pivotYType分别为x,y的
伸缩模式。
它有两种实现方式。
1、直接在程序中实现的方式
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation scale = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//设置动画持续时间
scale.setDuration(5000);
//开始动画
img.startAnimation(scale);
2、在XML中是创建动画
scale_anim.xml,在res/anim目录下
Xml代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="5000"
/>
</set>
Animation scale = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
//开始动画
img.startAnimation(scale);
效果
![](http://dl.iteye.com/upload/attachment/527729/b7e9e339-4e78-3c9d-8539-3c8bc9296210.gif)
第3种:TranslateAnimation(float fromXDelta, float toXDelta, float YDelta, float toYDelta)
功能:创建一个移动画面位置的动画
参数:fromXDelta,fromYDelta分别是其实坐标;toXDelta,toYDelta分别是结束坐标
它有两种是实现方式
1、直接在程序中实现
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation translate = new TranslateAnimation(10, 100, 10, 100);
//设置动画持续时间
translate.setDuration(3000);
//开始动画
img.startAnimation(translate);
2、在XML中创建动画
Xml代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="10"
android:toXDelta="100"
android:fromYDelta="10"
android:toYDelta="100"
android:duration="5000"
/>
</set>
在程序中可以定义其实现,比如在Button中的按钮事件
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation translate = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate_anim);
//开始动画
img.startAnimation(translate);
![](http://dl.iteye.com/upload/attachment/527735/5a4c8745-b0d6-3075-a754-524b8cba2ba8.gif)
第4种:Rotate(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType,
float pivotYValue)
功能:创建一个旋转画面的动画
参数:fromDegrees为开始的角度;toDegrees为结束的角度。pivotXValue、pivotYType分别为x,y的伸缩模式。
pivotXValue,pivotYValue分别为伸缩动画相对于x,y的坐标开始位置
它有两种实现方式。
1、直接在程序中创建动画
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation rotate = new RotateAnimation(0f,+360f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(3000);
img.startAnimation(rotate);
2、在XML中创建动画
rotate_anim.xml
在res/anim目录下
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
/>
</set>
Animation rotate
= AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate_anim);
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
img.startAnimation(rotate);
![](http://dl.iteye.com/upload/attachment/527738/16264a5e-10f1-311b-994b-8ae6332cf2fc.gif)
下面是程序的全部代码。XML定义的动画部分在上面
在程序中直接实现
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
package com.loulijun.tween;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class TweenActivity extends Activity {
Button btn1,btn2,btn3,btn4;
ImageView img;
//定义Alpha动画
private Animation alpha = null;
//定义Scale动画
private Animation scale = null;
//定义Translate动画
private Animation translate = null;
//定义Rotate动画
private Animation rotate = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//装载图片资源
img = (ImageView)findViewById(R.id.imgview);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
btn3 = (Button)findViewById(R.id.btn3);
btn4 = (Button)findViewById(R.id.btn4);
//定义Alpha动画
btn1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
//创建Alpha动画
alpha = new AlphaAnimation(0.1f, 1.0f);
//设置动画时间为5秒
alpha.setDuration(5000);
//开始播放
img.startAnimation(alpha);
}
});
//定义Scale动画
btn2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
scale = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
//设置动画持续时间
scale.setDuration(5000);
//开始动画
img.startAnimation(scale);
}
});
//定义Translate动画
btn3.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
translate = new TranslateAnimation(10, 100, 10, 100);
//设置动画持续时间
translate.setDuration(3000);
//开始动画
img.startAnimation(translate);
}
});
//定义Rotate动画
btn4.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
rotate = new RotateAnimation(0f, +360f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(3000);
img.startAnimation(rotate);
}
});
}
}
在XML中定义动画
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
package com.loulijun.tween2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class TweenActivity extends Activity {
Button btn1,btn2,btn3,btn4;
ImageView img;
//定义Alpha动画
private Animation alpha = null;
//定义Scale动画
private Animation scale = null;
//定义Translate动画
private Animation translate = null;
//定义Rotate动画
private Animation rotate = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//装载图片资源
img = (ImageView)findViewById(R.id.imgview);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
btn3 = (Button)findViewById(R.id.btn3);
btn4 = (Button)findViewById(R.id.btn4);
//定义Alpha动画
btn1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
//创建Alpha动画
alpha = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.alpha_anim);
//开始播放
img.startAnimation(alpha);
}
});
//定义Scale动画
btn2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
scale = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
//开始动画
img.startAnimation(scale);
}
});
//定义Translate动画
btn3.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
translate = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate_anim);
//开始动画
img.startAnimation(translate);
}
});
//定义Rotate动画
btn4.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
rotate = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate_anim);
img.startAnimation(rotate);
}
});
}
}
Android平台提供了两类动画,分别是Tween动画,和Frame动画。Tween通过场景里的对象不断的进行图片的变换,比如平移、渐变、缩放、旋转等来产生动画效果;Frame动画叫做顺序播放实现做好的图像和电影类似。另外加上gif动画,因为如果直接使用Bitmap或其他方法直接调用gif图片资源的话,显示的是静态的,如果要做成动态的,就需要一些其他的方法来实现。
首先来谈谈Tween动画,它有四种
①Alpha:渐变透明度动画
②Scale:渐变尺寸伸缩动画
③Translate:画面转换位置移动动画
④Rotate:画面转移旋转动画
这些动画的执行步骤差不多:先定义Animation动画对象,然后设置动画的一些属性,最后通过startAnimation()方法开始动画。
setDuration(long durationMillis);
功能:设置动画显示的时间
参数:durationMillis为动画显示时间的长短,以毫秒为单位
startAnimation(Animation animation)
功能:animation为要播放的动画
参数:animation为要播放的动画
第一种:AlphaAnimation(float fromAlpha, float toAlpha)
功能:创建一个透明度渐变的动画
参数说明:fromAlpha是动画起始时透明度;toAlpha是动画结束时透明度
注:0.0表示完全透明,1.0表示完全不透明
实现它有两种方式。
1、直接在程序中创建动画
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
//创建Alpha动画
Animation alpha = new AlphaAnimation(0.1f, 1.0f);
//设置动画时间为5秒
alpha.setDuration(5000);
//开始播放
img.startAnimation(alpha);
2、通过XML来创建动画
alpha_anim.xml。在res/anim目录下
Xml代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="5000">
</alpha>
</set>
程序中直接调用
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation scale = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
//开始动画
img.startAnimation(scale);
效果:
![](http://dl.iteye.com/upload/attachment/527717/8427f4b6-e790-3784-b857-eeb99636c16d.gif)
![](http://dl.iteye.com/upload/attachment/527719/70a9d62a-7249-31da-a094-ce53f1fd03f8.gif)
第二种:ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, floatXValue,
int pivotYType, float pivotYValue)
功能:创建一个渐变尺寸伸缩动画
参数:fromX,toX分别是起始和结束时x坐标上的伸缩尺寸。fromY,toY分别是起始和结束时ye坐标上的伸缩尺寸。
pivotXValue,pivotYValue分别为伸缩动画相对于x,y坐标开始的位置,pivotXType,pivotYType分别为x,y的
伸缩模式。
它有两种实现方式。
1、直接在程序中实现的方式
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation scale = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//设置动画持续时间
scale.setDuration(5000);
//开始动画
img.startAnimation(scale);
2、在XML中是创建动画
scale_anim.xml,在res/anim目录下
Xml代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="5000"
/>
</set>
Animation scale = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
//开始动画
img.startAnimation(scale);
效果
![](http://dl.iteye.com/upload/attachment/527729/b7e9e339-4e78-3c9d-8539-3c8bc9296210.gif)
第3种:TranslateAnimation(float fromXDelta, float toXDelta, float YDelta, float toYDelta)
功能:创建一个移动画面位置的动画
参数:fromXDelta,fromYDelta分别是其实坐标;toXDelta,toYDelta分别是结束坐标
它有两种是实现方式
1、直接在程序中实现
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation translate = new TranslateAnimation(10, 100, 10, 100);
//设置动画持续时间
translate.setDuration(3000);
//开始动画
img.startAnimation(translate);
2、在XML中创建动画
Xml代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="10"
android:toXDelta="100"
android:fromYDelta="10"
android:toYDelta="100"
android:duration="5000"
/>
</set>
在程序中可以定义其实现,比如在Button中的按钮事件
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation translate = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate_anim);
//开始动画
img.startAnimation(translate);
![](http://dl.iteye.com/upload/attachment/527735/5a4c8745-b0d6-3075-a754-524b8cba2ba8.gif)
第4种:Rotate(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType,
float pivotYValue)
功能:创建一个旋转画面的动画
参数:fromDegrees为开始的角度;toDegrees为结束的角度。pivotXValue、pivotYType分别为x,y的伸缩模式。
pivotXValue,pivotYValue分别为伸缩动画相对于x,y的坐标开始位置
它有两种实现方式。
1、直接在程序中创建动画
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
Animation rotate = new RotateAnimation(0f,+360f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(3000);
img.startAnimation(rotate);
2、在XML中创建动画
rotate_anim.xml
在res/anim目录下
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"
/>
</set>
Animation rotate
= AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate_anim);
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
img.startAnimation(rotate);
![](http://dl.iteye.com/upload/attachment/527738/16264a5e-10f1-311b-994b-8ae6332cf2fc.gif)
下面是程序的全部代码。XML定义的动画部分在上面
在程序中直接实现
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
package com.loulijun.tween;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class TweenActivity extends Activity {
Button btn1,btn2,btn3,btn4;
ImageView img;
//定义Alpha动画
private Animation alpha = null;
//定义Scale动画
private Animation scale = null;
//定义Translate动画
private Animation translate = null;
//定义Rotate动画
private Animation rotate = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//装载图片资源
img = (ImageView)findViewById(R.id.imgview);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
btn3 = (Button)findViewById(R.id.btn3);
btn4 = (Button)findViewById(R.id.btn4);
//定义Alpha动画
btn1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
//创建Alpha动画
alpha = new AlphaAnimation(0.1f, 1.0f);
//设置动画时间为5秒
alpha.setDuration(5000);
//开始播放
img.startAnimation(alpha);
}
});
//定义Scale动画
btn2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
scale = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
//设置动画持续时间
scale.setDuration(5000);
//开始动画
img.startAnimation(scale);
}
});
//定义Translate动画
btn3.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
translate = new TranslateAnimation(10, 100, 10, 100);
//设置动画持续时间
translate.setDuration(3000);
//开始动画
img.startAnimation(translate);
}
});
//定义Rotate动画
btn4.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
rotate = new RotateAnimation(0f, +360f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(3000);
img.startAnimation(rotate);
}
});
}
}
在XML中定义动画
Java代码
![](http://hualang.iteye.com/images/icon_star.png)
package com.loulijun.tween2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class TweenActivity extends Activity {
Button btn1,btn2,btn3,btn4;
ImageView img;
//定义Alpha动画
private Animation alpha = null;
//定义Scale动画
private Animation scale = null;
//定义Translate动画
private Animation translate = null;
//定义Rotate动画
private Animation rotate = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//装载图片资源
img = (ImageView)findViewById(R.id.imgview);
btn1 = (Button)findViewById(R.id.btn1);
btn2 = (Button)findViewById(R.id.btn2);
btn3 = (Button)findViewById(R.id.btn3);
btn4 = (Button)findViewById(R.id.btn4);
//定义Alpha动画
btn1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
//创建Alpha动画
alpha = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.alpha_anim);
//开始播放
img.startAnimation(alpha);
}
});
//定义Scale动画
btn2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
scale = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale_anim);
//开始动画
img.startAnimation(scale);
}
});
//定义Translate动画
btn3.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
translate = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate_anim);
//开始动画
img.startAnimation(translate);
}
});
//定义Rotate动画
btn4.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
rotate = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate_anim);
img.startAnimation(rotate);
}
});
}
}
相关文章推荐
- 玩转Android---组件篇---TextSwitcher
- 玩转Android--组件篇---Handler的使用
- 玩转Android---组件篇---AnalogClock,DigitalClock
- 玩转Android---2D图形及动画---Frame动画
- 玩转Android---2D图形及动画---View类使用
- 玩转Android---组件篇---SeekBar,RatingBar,Chronometer
- 玩转Android---组件篇---Handler的使用(2)
- 让你的 EditText 全部清除
- Android的ListView中给RadioGroup添加setOnCheckChangeListener的问题之一
- android省市区三级联动案例:(三)主要功能实现
- android省市区三级联动案例:(三)布局文件
- Android内存泄漏分析及调试
- 关于 android 程序中的 context
- Chromium on Android: Android在系统Chromium为了实现主消息循环分析
- android省市区三级联动案例:(一)运行效果
- Android中Handler的简单应用(一)
- android ViewDragHelper完全解析 自定义ViewGroup神器
- android沉浸式状态栏实现细节
- android Json解析
- AndroidStudio界面出现乱码