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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android处理图片透明度并绘画图片

發(fā)布時(shí)間:2024/1/8 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android处理图片透明度并绘画图片 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

/***設(shè)置透明例子部分代碼***/ public class TestPicTransparencyView extends SurfaceView implements SurfaceHolder.Callback{public ManThread thread;//原始圖片和透明處理后的圖片bmpprivate Bitmap changed_pic_bmp,src_pic_bmp; //兩個(gè)圖加壓到的int數(shù)組.private int[] allBmpPixArray; private int[] changedBmpPixArray; //數(shù)組的長度,為像素點(diǎn)個(gè)數(shù),為圖片的長*寬private int full_pic_int_size=BaseControl.SCREEN_HEIGHT*BaseControl.SCREEN_WIDTH;//屏幕像素private int min_pic_int_size = 0;//屏幕像素//透明圖片的長和寬private int small_pic_width;private int small_pic_height;//游戲畫面構(gòu)造器public TestPicTransparencyView(Context context) {super(context);//設(shè)置透明圖片大小small_pic_width = BaseControl.SCREEN_WIDTH/2;small_pic_height = BaseControl.SCREEN_HEIGHT/2;//設(shè)置透明圖片解壓到數(shù)組的長度min_pic_int_size = small_pic_width*small_pic_height;//加載資源src_pic_bmp=BitmapFactory.decodeResource(getResources(), R.drawable.pic);changed_pic_bmp=BitmapFactory.decodeResource(getResources(), R.drawable.pic);//定義圖片解壓到的數(shù)組大小allBmpPixArray = new int[full_pic_int_size];changedBmpPixArray = new int[min_pic_int_size];//啟動(dòng)繪畫線程SurfaceHolder holder = getHolder();holder.addCallback(this);thread = new ManThread(holder,context,new Handler());}//線程繪畫圖片class ManThread extends Thread{private SurfaceHolder mSurfaceHolder;public ManThread(SurfaceHolder sh,Context context,Handler ha){mSurfaceHolder = sh;//將前景圖的像素信息解壓到數(shù)組allBmpPixArray中src_pic_bmp.getPixels(allBmpPixArray, 0, BaseControl.SCREEN_WIDTH, 0, 0, BaseControl.SCREEN_WIDTH, BaseControl.SCREEN_HEIGHT);changed_pic_bmp.getPixels(changedBmpPixArray, 0, small_pic_width, 0, 0, small_pic_width, small_pic_height);//將小圖進(jìn)行透明處理dealTransparency();}public void run(){Canvas c = null;c = mSurfaceHolder.lockCanvas(null);synchronized (mSurfaceHolder) {src_pic_bmp = Bitmap.createBitmap(allBmpPixArray,BaseControl.SCREEN_WIDTH, BaseControl.SCREEN_HEIGHT,Config.ARGB_8888);//重新用修改像素后的 數(shù)組構(gòu)建圖片changed_pic_bmp= Bitmap.createBitmap(changedBmpPixArray,small_pic_width, small_pic_height,Config.ARGB_8888);c.drawBitmap(src_pic_bmp, 0, 0, null);c.drawBitmap(changed_pic_bmp, small_pic_width, small_pic_height, null);}if (c != null) {mSurfaceHolder.unlockCanvasAndPost(c);// 釋放對serface的編輯}}}//將小圖進(jìn)行透明處理,每調(diào)用一次透明度減半public void dealTransparency(){for(int i= 0 ;i< small_pic_width;i++){for(int j= 0 ;j< small_pic_height;j++){for (int z=31;z>=24;z--) /*** 第一次調(diào)用 當(dāng)Z=31時(shí),1左移31位,高位顏色透明值為1和原圖的透明度值1& = 1 ,進(jìn)入if*重復(fù)調(diào)用時(shí)會(huì)根據(jù)當(dāng)前透明度選擇左移位數(shù)值*/if ( ( (1<<z)& changedBmpPixArray[i+j*small_pic_width])!=0){/*** * 說明:* RGB類型的像素的24-31位保存的是透明度信息,* 當(dāng)值為255時(shí)代表不透明* 當(dāng)值為0時(shí)代表完全透明* 0-23位保存顏色信息* * (1<<z)左移31位,值為127,原圖片不透明,透明值為255* 重復(fù)調(diào)用的話每減一次透明度折半*/changedBmpPixArray[i+j*small_pic_width]-=(1<<z);break;}}}}@Overridepublic void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {// TODO Auto-generated method stub}@Overridepublic void surfaceCreated(SurfaceHolder holder) {thread.start();}public void surfaceDestroyed(SurfaceHolder holder) {try{thread.join();}catch (InterruptedException e) {}} }

?

?

總結(jié)

以上是生活随笔為你收集整理的Android处理图片透明度并绘画图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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