android 画图------类似跑马灯的效果

这是第二个实例画图里面,看的不是太懂,只是从中可以学会控件的继承与使用,当然也可以通过这个实例改造成跑马灯的效果,文字的跑马灯效果在这里不写了。

publicclassAnimateDrawablesextendsActivity{

privatestaticDrawabledr;

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(newSampleView(this));

}

privatestaticclassSampleViewextendsView{

privateAnimateDrawablemDrawable;

publicSampleView(Contextcontext){

super(context);

setFocusable(true);

setFocusableInTouchMode(true);

dr=context.getResources().getDrawable(R.drawable.beach);

//最主要的还是这句了,这个和下面的canvas相关mDrawable.draw(canvas);

dr.setBounds(0,0,dr.getIntrinsicWidth(),dr.getIntrinsicHeight());

//就是一个动态效果没啥说的

Animationan=newTranslateAnimation(0,100,0,200);

an.setDuration(2000);

an.setRepeatCount(-1);

//这句也算比较重要的

an.initialize(2,2,30,30);

mDrawable=newAnimateDrawable(dr,an);

an.startNow();

}

@Override

protectedvoidonDraw(Canvascanvas){

canvas.drawColor(Color.WHITE);

//这句比较重要了

mDrawable.draw(canvas);

//dr.draw(canvas);

invalidate();

}

}

}

在publicclassAnimateDrawableextendsProxyDrawable中

@Override

publicvoiddraw(Canvascanvas){

Drawabledr=getProxy();

if(dr!=null){

intsc=canvas.save();

Log.i("aa",sc+"aa");

Animationanim=mAnimation;

if(anim!=null){

anim.getTransformation(

AnimationUtils.currentAnimationTimeMillis(),

mTransformation);

canvas.concat(mTransformation.getMatrix());

}

dr.draw(canvas);

canvas.restoreToCount(sc);

}

}

比较重要了只要实现图片的效果。

相关推荐