十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章给大家介绍 canvas drawBitmap方法怎么样在Android项目中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!成都创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,网站设计、成都做网站负责任的成都网站制作公司!Android canvas drawBitmap方法详解及实例
之前自己在自定义view,用到canvas.drawBitmap(Bitmap, SrcRect, DesRect, Paint)的时候,对其中的第2和3个参数的含义含糊不清。看源码函数也没理解,然后看了一些其他的博客加上自己的理解,整理如下。首先,我们看一张图片,今天就要绘制这张图片。
然后将图片用红色的线条分成4个部分,如下:
我们自定义一个View,代码如下:
public class PoterDuffLoadingView extends View { private Resources mResources; private Paint mBitPaint; private Bitmap mBitmap; private int mTotalWidth, mTotalHeight; private Bitmap girlBitmap; private int girlBitWidth , girlBitHeight; private Rect girlSrcRect , girlDesRect; public PoterDuffLoadingView(Context context) { super(context); mResources = getResources(); initBitmap(); } private void initBitmap() { //美女图片的宽和高 girlBitmap = ((BitmapDrawable)mResources.getDrawable(R.drawable.a1)).getBitmap(); girlBitWidth = girlBitmap.getWidth(); girlBitHeight = girlBitmap.getHeight(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(girlBitmap, girlSrcRect, girlDesRect, null); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { Log.d("xxxxxx", "onSizeChanged , w = "+w+" , h = "+h+" , mBitWidth = "+mBitWidth+" , mBitHeight = "+mBitHeight); super.onSizeChanged(w, h, oldw, oldh); mTotalWidth = w; mTotalHeight = h; girlSrcRect = new Rect(0, 0, girlBitWidth, girlBitHeight); girlDesRect = new Rect(0, 0, girlBitWidth, girlBitHeight); } }