9妹—NinePatch (SDK中/tools/draw9patch.bat),
是Android SDK中自帶的一個小工具,能夠對.png圖片進行處理,生成一個.9.png格式的圖片,
如果使用直接.png格式的圖片,圖像拉伸操作時,圖片就會有失真,而.9.png是Android裡所支持的一種特殊的圖片格式,可以實現部分拉伸,
NinePatch的使用:
畫出2條線,確定圖片的縮放區域,之所以叫9妹,因為她是將圖片分為9個塊,綠色的為不可縮放部分,紅色的是可縮放部分,
直接縮放效果和使用9妹處理後的效果:
下面看一下實際效果,
[java]public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
}
class MyView extends View{
Bitmap bm1,bm2;
Paint paint=new Paint();
public MyView(Context context) {
super(context);
bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.t1);
bm2 = BitmapFactory.decodeResource(getResources(), R.drawable.t2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF rectf = new RectF(0, 0, 240, 280);
//普通png放大
canvas.drawBitmap(bm1, null, rectf, paint);
//創建一個ninePatch的對象實例,
//第一個參數是bitmap
//第二個參數為如何處理拉伸方式, .9.png中自身有這些信息,隻需要調用getNinePatchChunk()即可
//第三個參數是圖片名,可為空
NinePatch np = new NinePatch(bm2, bm2.getNinePatchChunk(), null);
//9妹png放大
np.draw(canvas, rectf);
}
}
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
}
class MyView extends View{
Bitmap bm1,bm2;
Paint paint=new Paint();
public MyView(Context context) {
super(context);
bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.t1);
bm2 = BitmapFactory.decodeResource(getResources(), R.drawable.t2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF rectf = new RectF(0, 0, 240, 280);
//普通png放大
canvas.drawBitmap(bm1, null, rectf, paint);
//創建一個ninePatch的對象實例,
//第一個參數是bitmap
//第二個參數為如何處理拉伸方式, .9.png中自身有這些信息,隻需要調用getNinePatchChunk()即可
//第三個參數是圖片名,可為空
NinePatch np = new NinePatch(bm2, bm2.getNinePatchChunk(), null);
//9妹png放大
np.draw(canvas, rectf);
}
}Oh,9妹威武~~~
摘自 柒尐狐的專欄