android动画实例
来源:互联网 发布:ds数据精灵授权码 编辑:程序博客网 时间:2024/05/28 04:55
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
public class ProxyDrawable extends Drawable {
private Drawable mProxy;//画图对象
public ProxyDrawable(Drawable target){//构造函数
mProxy = target;
}
public Drawable getProxy(){//获取新对象
return mProxy;
}
public void setProxy(Drawable proxy){//设置画图对象
if( proxy != this ){
mProxy = proxy;
}
}
@Override
public void draw(Canvas canvas) {//画图
if( mProxy != null ){
mProxy.draw(canvas);
}
}
@Override
public void setAlpha(int alpha) {//设置透明度
if( mProxy != null ){
mProxy.setAlpha(alpha);
}
}
@Override
public void setColorFilter(ColorFilter cf) {//设置颜色过滤
if( mProxy != null ){
mProxy.setColorFilter(cf);
}
}
@Override
public int getOpacity() {//获取透明度
//return 0;
return mProxy != null ? mProxy.getOpacity() : PixelFormat.TRANSPARENT;
}
@Override
public int getIntrinsicWidth() {//返回固有的宽度
//return super.getIntrinsicWidth();
return mProxy != null ? mProxy.getIntrinsicWidth() : -1;
}
@Override
public int getIntrinsicHeight() {//返回固有的高度
//return super.getIntrinsicHeight();
return mProxy != null ? mProxy.getIntrinsicHeight() : -1;
}
@Override
public void setDither(boolean dither) {//设置抖动
//super.setDither(dither);
if( mProxy != null ){
mProxy.setDither(dither);
}
}
@Override
public void setFilterBitmap(boolean filter) {
//super.setFilterBitmap(filter);
if( mProxy != null ){
mProxy.setDither(filter);
}
}
}
package src.com;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Transformation;
public class AnimateDrawable extends ProxyDrawable {
private Animation mAnimation;
private Transformation mTransformation = new Transformation();
public AnimateDrawable(Drawable target) {
super(target);
}
public AnimateDrawable(Drawable target, Animation animation){
super(target);
mAnimation = animation;
}
public Animation getAnimation() {
return mAnimation;
}
public void setAnimation(Animation anim){
mAnimation = anim;
}
public boolean hasStarted(){
return mAnimation != null && mAnimation.hasStarted();
}
public boolean hasEnded(){
return mAnimation != null && mAnimation.hasEnded();
}
@Override
public void draw(Canvas canvas) {
//super.draw(canvas);
Drawable dr = getProxy();
if( dr != null ){
int sc = canvas.save();
Animation anim = mAnimation;
if( anim != null ){
anim.getTransformation(
AnimationUtils.currentAnimationTimeMillis(),
mTransformation);
canvas.concat(mTransformation.getMatrix());
}
dr.draw(canvas);
canvas.restoreToCount(sc);
}
}
}
package src.com;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
public class AnimationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(new AnimationView(this));
}
private static class AnimationView extends View{
private AnimateDrawable mDrawable;
public AnimationView(Context context){
super(context);
Drawable pic = context.getResources().getDrawable(R.drawable.mountain);
pic.setBounds(0, 0, pic.getIntrinsicWidth(), pic.getIntrinsicHeight());
Animation move = new TranslateAnimation(0, 150, 0, 300);
move.setDuration(5000);
move.setRepeatCount(-1);
move.initialize(0, 0, 0, 0);
mDrawable = new AnimateDrawable(pic, move);
move.startNow();
}
@Override
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
canvas.drawColor(Color.GREEN);
mDrawable.draw(canvas);
invalidate();
}
}
}
- android动画实例
- Android Frame动画实例
- Android----Tween动画实例
- Android动画实例 (一)
- Android动画实例 (二)
- Android动画特效实例
- Android应用启动动画实例
- Android学习之动画实例
- Android属性动画运用实例
- Android 属性动画实例+疑惑
- [Android实例] android动画效果切换案例
- android动画xml文件详细实例说明
- Android 3d翻转动画(实例)
- Android 帧动画(animation)实例
- android 显示gif动画(附带实例)
- android属性动画弹出菜单实例
- android Animation动画详解(带实例)
- Android 动画 使用 实例 问题 详解
- POJ 2464 Brownie Points II 树状数组||线段树
- 104、proc 配置
- 在淘宝大半年的零散体会
- 把多个空格换成一个空格或下划线
- js 编码转换 gb2312 & utf8
- android动画实例
- json所需jar包
- 关于in_addr 和inet_ntoa的用法
- dede运行php
- JS 换背景图片
- android布局之LinearLayout, layout_weight
- Linux中利用RAW SOCKET直接通过网卡收发数据
- redis常用命令
- js 数据类型转换