美文网首页
android自定义View中用NinePatch类画9图

android自定义View中用NinePatch类画9图

作者: HWilliamgo | 来源:发表于2018-07-03 20:00 被阅读24次

    9图的制作在官网和其他博客中都有大量教程,最终可以制作出XXX.9.png文件

    没有用NinePatch:

    在自定义View中,直用Bitmap和画笔而不配合NinePatch类是画不9图的效果的,比如:

    //R.drawable.image9Patch是制作好的9图
    Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.image9Patch)
    
    @Override
    protected void onDraw(Canvas canvas) {
       ...创建RectF dst,作为bitmap被画出且自动缩放的矩形区域。
       //直接用canvas画
       canvas.drawBitmap(bitmap,null,dst,null);
    }
    

    这样是画不出想要的9图的效果的。在目标矩形中,图片依然会被不和谐地拉伸或缩放。

    用了NinePatch

    @Override
    protected void onDraw(Canvas canvas) {
        ...创建RectF dst,作为bitmap被画出且自动缩放的矩形区域。
    
        NinePatch np=new NinePatch(bitmap,bitmap.getNinePatchChunk(),null);
        np.draw(canvas,dst);
    }
    

    借助NinePatch这个类,用他来画,最后在目标矩形区域,可以成功地按照9图的方式来缩放。

    相关文章

      网友评论

          本文标题:android自定义View中用NinePatch类画9图

          本文链接:https://www.haomeiwen.com/subject/ujijuftx.html