安卓自定义view动画案例

小图片向做移动:

小图片向右移动:


代码:


package com.example.customview;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;


public class CustomView extends View{
Bitmap bitmapBackground,log1,log2,pig,flower,thrid;
int viewWidth,viewHeight;
boolean isRunning=true;
int pigx,pigy,count=1,back=1;




// 在布局文件中使用
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
Log.i("TAG", "CustomView");


bitmapBackground=BitmapFactory.decodeResource(getResources(), R.drawable.background);
log1=BitmapFactory.decodeResource(getResources(), R.drawable.loading_logo);
log2=BitmapFactory.decodeResource(getResources(), R.drawable.loading_progressbar);
pig=BitmapFactory.decodeResource(getResources(), R.drawable.f007);
flower=BitmapFactory.decodeResource(getResources(), R.drawable.f008);
thrid=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);


new Thread(new Runnable() {
public void run() {
while(isRunning){

try {

// 走到左边,向右移,走到右边,再向左移

if(pigx==viewWidth-pig.getWidth()){
back=1;
}
if(pigx<pig.getWidth()){
back=2;
}
switch (back) {
case 1:
pigx-=30;
break;
case 2:
pigx+=30;
break;
}
postInvalidate();
Thread.currentThread().sleep(500);
} catch (Exception e) {
//ExceptionUtil.handleException(e);
}
}
}
}).start();;


}
@Override
protected void onDraw(Canvas canvas) {
Log.i("TAG", "onDraw");
Paint paint=new Paint();
for(int col=0;col<viewWidth/bitmapBackground.getWidth()+1;col++){
for(int row=0;row<viewHeight/bitmapBackground.getHeight()+1;row++){
canvas.drawBitmap(bitmapBackground,
col*bitmapBackground.getWidth(),
row*bitmapBackground.getHeight(), paint);
}
}
int logwdith=(viewWidth-log1.getWidth())/2;
int logHeith=(viewHeight-log1.getHeight())/2;
//Log.i("TAG", "logHeith="+logHeith);


canvas.drawBitmap(log1, logwdith, logHeith, paint);


int log2Left=(viewWidth-log2.getWidth())/2;
int log2Top=logHeith+log2.getHeight()+10;
//Log.i("TAG", "log2Top="+log2Top);


canvas.drawBitmap(log2, log2Left, log2Top, paint);




pigy=logwdith/2;
Log.i("TAG", "pigy="+pigy);

// 显示3幅画

switch (count) {
case 1:
canvas.drawBitmap(pig, pigx, pigy, paint);
count=2;
break;
case 2:
canvas.drawBitmap(flower, pigx, pigy, paint);
count=3;
break;
case 3:
canvas.drawBitmap(thrid, pigx, pigy, paint);
count=1;
break;
}
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
// TODO Auto-generated method stub
super.onSizeChanged(w, h, oldw, oldh);
viewWidth=w;
viewHeight=h;
pigx=w-pig.getWidth();
Log.i("TAG", "pigx="+pigx);
Log.i("TAG", "onSizeChanged");
}
}

其他2个文件:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值