开发中,一般都会用到.9.png格式的图片(如果不知道如何画,请看我上篇博文《关于android中的.9图(一)——如何画.9图》),一般的使用都是在XML布局文件当中直接引用,但是有些情况,比如要自己定义一个view,里面需要画个什么形状,然后使用一张9图去填充这个形状,这时候就可以用到9图了,当然,看我这个demo很简单或许有人会说不用这么麻烦,但我这里的point在于如何用java代码设置9图。
比如说,抠门的设计师给了你如下一张切图,注意!!是中间那个小黑点:
好啦,要你自定义一个view,view中有一个方形,把这个9图作为背景。那么现在就可以这样做,直接上代码了:
package com.test;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.NinePatch;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import com.kroc.volleydemo.R;
public class MyView extends View {
private NinePatch mNinePatch;//画9图的
private Paint mPaint;//画笔
private Rect mRect;//矩形
private Bitmap mBitmap;//bitmap,引入9图
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
mRect = new Rect(100, 100, 450, 450);
mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_black_bg);
mNinePatch = new NinePatch(mBitmap, mBitmap.getNinePatchChunk(), null);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mNinePatch.draw(canvas, mRect, mPaint);
}
}