1.
原圖:
2.主要代碼
public class MainActivity extends Activity {ImageView img;private Bitmap imgMarker;private int width,height; //圖片的高度和寬頻private Bitmap imgTemp; //臨時標記圖@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);img = (ImageView) findViewById(R.id.imt_test);imgMarker = BitmapFactory.decodeResource(getResources(), R.drawable.icon_tag);width = imgMarker.getWidth();height = imgMarker.getHeight();img.setBackgroundDrawable(createDrawable('A'));}// 穿件帶字母的標記圖片private Drawable createDrawable(char letter) {imgTemp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(imgTemp);Paint paint = new Paint(); // 建立畫筆paint.setDither(true);paint.setFilterBitmap(true);Rect src = new Rect(0, 0, width, height);Rect dst = new Rect(0, 0, width, height);canvas.drawBitmap(imgMarker, src, dst, paint);Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG| Paint.DEV_KERN_TEXT_FLAG);textPaint.setTextSize(20.0f);textPaint.setTypeface(Typeface.DEFAULT_BOLD); // 採用預設的寬度textPaint.setColor(Color.WHITE);canvas.drawText(String.valueOf(letter), width /2-5, height/2+5,textPaint);canvas.save(Canvas.ALL_SAVE_FLAG);canvas.restore();return (Drawable) new BitmapDrawable(getResources(), imgTemp);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}
測試通過,可以使用
源碼: 點擊開啟連結