自定义控件中的DrawingCache

[置顶]自定义控件中的DrawingCache

分类:androiddrawingcac

DrawingCac

叙述

学到东西不偷着藏着,趁今天周五赶紧跟大家分享一下DrawingCache.

当我们想对之前已经绘制过的东西进行保存时,需要用到的一个方法。 下面结合一个简单地例子–画飞机,讲讲这个方法的简单好用之处。。希望对大家有所帮助。 package com.sc.yanzheng.wight; import com.sc.yanzheng.R; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.view.MotionEvent; import android.view.View;

/** * 类说明 * @author sc * @date 2015-7-29 上午8:56:08 * */ public class PlaneView extends View { int i=1; public float currentX; public float currentY; private Bitmap mBgBitmap;

Bitmap plane,enemy; // 定义、并创建画笔 Paint p = new Paint(); public PlaneView(Context context) { super(context); // 定义飞机图片 plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); enemy = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); setFocusable(true); }

@Override public void onDraw(Canvas canvas) { super.onDraw(canvas); if(mBgBitmap!=null){ canvas.drawBitmap(mBgBitmap, 0, 0, p); } // 绘制飞机 canvas.drawBitmap(plane, currentX, currentY, p); canvas.save(); //绘制敌机 canvas.drawBitmap(enemy, 50, 50, p); canvas.restore();

} private void getCacheBitmap() {//这次主要讲得就是这个方法, setDrawingCacheEnabled(true);//开启cache Bitmap mViewBitmap = getDrawingCache();//会重新调用一遍ondraw方法,将画出来的东西存储为一个bitmap if (mViewBitmap != null) { if(mBgBitmap != null && !mBgBitmap.isRecycled()){ mBgBitmap.recycle();//回收之前的bitmap mBgBitmap = null; } mBgBitmap = Bitmap.createBitmap(mViewBitmap); } setDrawingCacheEnabled(false);//一定要记得关闭,因为这个很耗内存 postInvalidate(); } @SuppressLint(“ClickableViewAccessibility”) @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_UP){ currentX=event.getX(); currentY=event.getY(); getCacheBitmap(); } return true; } }

总结

但是这方法其实在这里不是很适合,我只是为了讲解下这个方法的简单用法。 因为这其实很耗内存,如果在这里使用,每点击一次就会开启cache是很耗内存的,这方法一般是用在比如说画一条关于温度的曲线图,每隔15分钟,有一些数据获取到,然后再调用这方法绘制出来,就是有新数据的时候再调用,这样比较适合。 有任何问题欢迎私信骚扰。。

附:第一次用markdown编辑器,不习惯啊。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇设置中用到的简单好用的PreferenceActivity

顶0踩0

,却坐在不足一平米的椅子上。

自定义控件中的DrawingCache

相关文章:

你感兴趣的文章:

标签云: