Android圖形繪製之——貼圖的藝術
阿新 • • 發佈:2019-01-26
1.自定義view
2.重寫onDraw()方法
3.XML中引用
自定義view程式碼:
public class MyView02 extends View{ private Bitmap bitmap;//本地圖片資源 private Paint paint;//畫筆 public MyView02(Context context, AttributeSet attrs) { super(context, attrs); initBtimap(); } /** * 初始化圖片 */ private void initBtimap() { paintXML中引用:= new Paint();//建立一個畫筆 bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.h_p_l_image); } /** * 重寫繪製方法 */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint.setAntiAlias(true);//開啟抗鋸齒 paint.setColor(Color.RED);//設定畫筆顏色 paint.setTextSize(15);//設定畫筆字型大小canvas.drawBitmap(bitmap, 10, 10, paint);//繪製圖片 canvas.save();//儲存畫布狀態 Matrix m1 = new Matrix();//建立矩陣物件 m1.setTranslate(500, 10);//平移矩陣 Matrix m2 = new Matrix();//建立矩陣物件 m2.setRotate(15);//以一定的角度旋轉矩陣 Matrix m3 = new Matrix();//建立矩陣物件 m3.setConcat(m1, m2);//連線矩陣1和矩陣2 m3.setScale(0.8f, 0.8f);//縮放矩陣 canvas.drawBitmap(bitmap,m2, paint); canvas.restore();//恢復畫布狀態 canvas.save();//儲存畫面狀態 paint.setAlpha(180);//設定透明度 m1.setTranslate(200, 100);//平移矩陣1 m2.setScale(1.3f, 1.3f);//縮放矩陣2 m3.setConcat(m1, m2);//連線矩陣1和矩陣2 canvas.drawBitmap(bitmap, m3, paint);//繪製圖片 paint.reset();//恢復畫筆設定 canvas.restore();//恢復畫布設定 paint.setTextSize(40);//設定字型大小 paint.setColor(Color.RED);//設定畫筆顏色 canvas.drawText("圖片的寬度" + bitmap.getWidth(), 20, 220, paint); paint.reset(); paint.setTextSize(30); paint.setColor(Color.BLACK); canvas.drawText("圖片的高度" + bitmap.getHeight(), 20, 260,paint); paint.reset();//恢復畫筆設定 } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".ui.activity.MyViewActivity"> <testku.mygame.ui.myview.MyView02 android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>執行效果: