日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android下利用Bitmap切割图片

發(fā)布時(shí)間:2024/7/23 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android下利用Bitmap切割图片 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在自己自定義的一個(gè)組件中由于需要用圖片顯示數(shù)字編號(hào),而當(dāng)前圖片就只有一張,上面有0-9是個(gè)數(shù)字,于是不得不考慮將其中一個(gè)個(gè)的數(shù)字切割下來,需要顯示什么數(shù)字,只需要組合一下就好了。
下面是程序的關(guān)鍵代碼:
在MyView(繼承于View)類中的重寫的onDraw(Canvas canvas)方法中,有如下代碼段:

Bitmap resource = BitmapFactory.decodeResource(this.getResources(), R.drawable.num); Bitmap zero = Bitmap.createBitmap(resource, 0, 0, 12, 12); Bitmap one = Bitmap.createBitmap(resource, 12, 0, 12, 12); Bitmap two = Bitmap.createBitmap(resource, 24, 0, 12, 12); Bitmap three = Bitmap.createBitmap(resource, 36, 0, 12, 12); Bitmap four = Bitmap.createBitmap(resource, 48, 0, 12, 12); Bitmap five = Bitmap.createBitmap(resource, 60, 0, 12, 12); Bitmap six = Bitmap.createBitmap(resource, 72, 0, 12, 12); Bitmap seven = Bitmap.createBitmap(resource, 84, 0, 12, 12); Bitmap eight = Bitmap.createBitmap(resource, 96, 0, 12, 12); Bitmap nine = Bitmap.createBitmap(resource, 108, 0, 12, 12);

其中R.drawable.num為數(shù)字圖片,每個(gè)數(shù)字占據(jù)的像素為12*12,Bitmap.createBitmap方法中的五個(gè)參數(shù)意義分別為:需要切割的圖片資源、切割起始點(diǎn)的X坐標(biāo)、切割起始點(diǎn)的Y坐標(biāo)、切割多寬、切割多高。
切割下來之后就非常簡單的就可以顯示各種數(shù)字了,例如:用String類型的number表示需要顯示的數(shù)字,則

char nums[] = number.toCharArray(); for(int i = 0; i < nums.length; i ++) { if(nums[i] == '0') { canvas.drawBitmap(zero, i * 12, 0, mPaint); } else if(nums[i] == '1') { canvas.drawBitmap(one, i * 12, 0, mPaint); } else if(nums[i] == '2') { canvas.drawBitmap(two, i * 12, 0, mPaint); } else if(nums[i] == '3') { canvas.drawBitmap(three, i * 12, 0, mPaint); } else if(nums[i] == '4') { canvas.drawBitmap(four, i * 12, 0, mPaint); } else if(nums[i] == '5') { canvas.drawBitmap(five, i * 12, 0, mPaint); } else if(nums[i] == '6') { canvas.drawBitmap(six, i * 12, 0, mPaint); } else if(nums[i] == '7') { canvas.drawBitmap(seven, i * 12, 0, mPaint); } else if(nums[i] == '8') { canvas.drawBitmap(eight, i * 12, 0, mPaint); } else if(nums[i] == '9') { canvas.drawBitmap(nine, i * 12, 0, mPaint); } }

其中canvas為畫布,drawBitmap方法中的四個(gè)參數(shù)的意義分別為:需要繪制的圖片資源、在畫布上繪制的起始點(diǎn)的X坐標(biāo)、Y坐標(biāo)、畫筆。其中畫筆在此處可以不進(jìn)行任何設(shè)置,只需new一個(gè)出來即可,Paint mPaint = new Paint();

完整代碼

NumView

package com.barney;import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.View;public class NumView extends View {private static Paint mPaint;private String num;public NumView(Context context, String num) {super(context);this.num = num;mPaint = new Paint();}@Overridepublic void draw(Canvas canvas) {super.onDraw(canvas);int base = 0;mPaint.setAntiAlias(true);DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); BitmapFactory.Options options = new BitmapFactory.Options();options.inDensity = dm.densityDpi;Bitmap resource = BitmapFactory.decodeResource(this.getResources(), R.drawable.num, options);Bitmap zero = Bitmap.createBitmap(resource, 0, 0, 12, 12);Bitmap one = Bitmap.createBitmap(resource, 12, 0, 12, 12);Bitmap two = Bitmap.createBitmap(resource, 24, 0, 12, 12);Bitmap three = Bitmap.createBitmap(resource, 36, 0, 12, 12);Bitmap four = Bitmap.createBitmap(resource, 48, 0, 12, 12);Bitmap five = Bitmap.createBitmap(resource, 60, 0, 12, 12);Bitmap six = Bitmap.createBitmap(resource, 72, 0, 12, 12);Bitmap seven = Bitmap.createBitmap(resource, 84, 0, 12, 12);Bitmap eight = Bitmap.createBitmap(resource, 96, 0, 12, 12);Bitmap nine = Bitmap.createBitmap(resource, 108, 0, 12, 12);char nums[] = num.toCharArray();for(int i = 0; i < nums.length; i ++) {Rect rect = new Rect();rect.set(base + i * 12, 0, base + i * 12 + 12, 12);Bitmap bitmap = null;if(nums[i] == '0') {bitmap = zero;} else if(nums[i] == '1') {bitmap = one;} else if(nums[i] == '2') {bitmap = two;} else if(nums[i] == '3') {bitmap = three;} else if(nums[i] == '4') {bitmap = four;} else if(nums[i] == '5') {bitmap = five;} else if(nums[i] == '6') {bitmap = six;} else if(nums[i] == '7') {bitmap = seven;} else if(nums[i] == '8') {bitmap = eight;} else if(nums[i] == '9') {bitmap = nine;}canvas.drawBitmap(bitmap,null, rect, mPaint);}} }

BitmapDemoActivity

package com.barney;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout;public class BitmapDemoActivity extends Activity {private EditText myEditText;private Button myButton;private LinearLayout myLinearLayout;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);myButton = (Button) this.findViewById(R.id.myButton);myEditText = (EditText) this.findViewById(R.id.myEditText);myLinearLayout = (LinearLayout) this.findViewById(R.id.myLinearLayout);myButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString num = myEditText.getText().toString();NumView numView = new NumView(BitmapDemoActivity.this, num);myLinearLayout.removeAllViews();myLinearLayout.addView(numView);}});} }

源代碼

源代碼

參考鏈接

Android下利用Bitmap切割圖片 - - ITeye技術(shù)網(wǎng)站

效果如下

總結(jié)

以上是生活随笔為你收集整理的Android下利用Bitmap切割图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。