原理很簡單, 就是將輸入的String字串map到對應的圖片就好了
private Bitmap convertString2Drawable(String number){
//圖片資源陣列
int[] numberId = {
R.drawable.ic_num_0,
R.drawable.ic_num_1,
R.drawable.ic_num_2,
R.drawable.ic_num_3,
R.drawable.ic_num_4,
R.drawable.ic_num_5,
R.drawable.ic_num_6,
R.drawable.ic_num_7,
R.drawable.ic_num_8,
R.drawable.ic_num_9
};
//將String轉成char陣列
char[] charArray = number.toCharArray();
//計算圖片的寬和高
Resources res = getResources();
Bitmap[] bmps = new Bitmap[charArray.length];
int totalWidth = 0;
int bmpHeight = 0;
for(int i = 0; i < charArray.length; i++){
bmps[i] = BitmapFactory.decodeResource(res, numberId[charArray[i] - '0']);
totalWidth += bmps[i].getWidth();
if(bmps[i].getHeight() > bmpHeight) bmpHeight = bmps[i].getHeight();
}
//建立bitmap的總大小
Bitmap result = Bitmap.createBitmap(totalWidth, bmpHeight, Bitmap.Config.ARGB_8888);
//把數字畫上去
Canvas canvas = new Canvas(result);
int offset_x = 0;
for(int i = 0; i < charArray.length; i++){
canvas.drawBitmap(bmps[i], offset_x, 0, null);
offset_x += bmps[i].getWidth();
}
return result;
}
舉個在在activity呼叫該函數的例子
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ImageView img = findViewById(R.id.img);
img.setImageBitmap(convertString2Drawable("12345"));
}
也可以參考 Android 圖片組合https://stackoverflow.com/questions/10640204/android-combine-pictures