第一种:继承View
实现自己的属性
<com.cc.imagewithmarkersample.MyViewandroid:id="@+id/myviewid"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"SrcLT="@drawable/red"SrcRT="@drawable/green"SrcRB="@drawable/green"/>
public class MyView extends View {// private String mtext;private int msrclt, msrcrt, msrcrb;private static final String SrcLT = "SrcLT";private static final String SrcRT = "SrcRT";private static final String SrcRB = "SrcRB";private static final int Canvas_W=150,Canvas_H=150;private static final int Rect_W=100,Rect_H=100;private Bitmap bitmap;private int bitmap_W,bitmap_H;private int LT_X=0,LT_Y=0;private int RT_X=100,RT_Y=0;private int RB_X=100,RB_Y=100;private int Bitmap_X=25,Bitmap_Y=25;private Rect mRect=null;public MyView(Context context) {super(context);}public MyView(Context context, AttributeSet attrs) {super(context, attrs); // int textId = attrs.getAttributeResourceValue(null, "Text",0);int srcLeftTopId = attrs.getAttributeResourceValue(null, SrcLT, 0);int srcRightTopId = attrs.getAttributeResourceValue(null, SrcRT, 0);int srcRightBottomId = attrs.getAttributeResourceValue(null, SrcRB, 0); // mtext = context.getResources().getText(textId).toString();msrclt = srcLeftTopId;msrcrt = srcRightTopId;msrcrb = srcRightBottomId;mRect=new Rect(Bitmap_X,Bitmap_Y,Rect_W+Bitmap_X,Rect_H+Bitmap_Y);}public void setImageBitmap(Bitmap bm) {/** 获取图片宽高 **/bitmap_W = bm.getWidth();bitmap_H = bm.getHeight();Bitmap_X=(Canvas_W-bitmap_W)/2;Bitmap_Y=(Canvas_H-bitmap_H)/2;if (bitmap != bm) {bitmap=bm;}}@Overrideprotected void onDraw(Canvas canvas) {Paint paint = new Paint();paint.setColor(Color.GRAY);canvas.drawBitmap(bitmap, Bitmap_X, Bitmap_Y, paint);paint.setAlpha(100);canvas.drawRect(mRect,paint);paint.setAlpha(255);onDrawLt(canvas, paint);onDrawRt(canvas, paint);onDrawRb(canvas, paint);// canvas.drawText(mtext, bw / 2, 30, paint); }private void onDrawLt(Canvas canvas, Paint paint) {InputStream is = getResources().openRawResource(msrclt);Bitmap mBitmap = BitmapFactory.decodeStream(is);int bh = mBitmap.getHeight();int bw = mBitmap.getWidth();canvas.drawBitmap(mBitmap, LT_X, LT_Y, paint);}private void onDrawRt(Canvas canvas, Paint paint) {InputStream is = getResources().openRawResource(msrcrt);Bitmap mBitmap = BitmapFactory.decodeStream(is);int bh = mBitmap.getHeight();int bw = mBitmap.getWidth();canvas.drawBitmap(mBitmap, RT_X, RT_Y, paint);}private void onDrawRb(Canvas canvas, Paint paint) {InputStream is = getResources().openRawResource(msrcrb);Bitmap mBitmap = BitmapFactory.decodeStream(is);int bh = mBitmap.getHeight();int bw = mBitmap.getWidth();canvas.drawBitmap(mBitmap, RB_X, RB_Y, paint);} }