Android用自定义view实现帧动画

2017-10-25  本文已影响0人  NullUser
此篇文章简单讲解下如何用自定义view将一张bitmap绘制在屏幕上

(绘制UI需了解下三个绘图工具类Paint,Canvas,Path)
1.我们创建一个Mview类继承自View

public class Mview extends View {
    private Paint mpaint;    //定义一个画笔
    private Canvas mCanvas;    //定义一个画布
    private Bitmap mBitmap;      //定义一个Bitmap
    //重写构造方法
    public Mview(Context context) {
        super(context);
        init();
    }


    public Mview(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    //进行初始化操作
    private void init()
    {
        mpaint=new Paint();
        mBitmap= BitmapFactory.decodeFile("/storage/emulated/0/1.webp");//得到bitmap
    }
    
   //UI绘制代码在onDraw里
    @Override
    protected void onDraw(Canvas canvas) {
       canvas.drawBitmap(mBitmap,0,0,mpaint);//调用Canvas类的drawBitmap()即可绘制bitmap。

    }
}

2.在layout中即可加入自定义的View

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.you.viewdemo1.MainActivity">

    <com.example.you.viewdemo1.Mview
        android:id="@+id/mView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

3.如果我们要不断刷新UI怎么办?

我们用具体实例体验下用自定义view进行UI刷新
demo.JPG
public void setmBitmap(Bitmap get_bitmap)
    {
        this.mBitmap=get_bitmap;
    }
new Thread(new Runnable() {
                    @Override
                    public void run() {
              //我们用一个循环不断更新bitmap并进行重绘
              //不断改变i从1到7
                        for(int i=1;i<8;i++)
                        {
                         // 每次获取对应i名字的图片并赋给bitmap
                            new_bitmap= BitmapFactory.decodeFile("/storage/emulated/0/"+i+".png");
                        //调用Mview中setmBitmap设置新得到的bitmap
                            mview.setmBitmap(new_bitmap);
                        //重绘为当前bitmap
                            mview.postInvalidate();
      
                            if(i==7)
                                i=0;
                        }
                    }
                }).start();

启动app我们便可在手机上看到连续的爆炸画面,实现了UI刷新

上一篇 下一篇

猜你喜欢

热点阅读