欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Bitmap 相關(guān)2:Bitmap.createBitmap() 使用

系統(tǒng) 2848 0
寫(xiě)道

?Bitmap 創(chuàng)建

?

寫(xiě)道
我們不能總是依賴于BitmapFactory 下面告訴大家怎么從Bitmaqp中截取某一部分創(chuàng)建新的Bitmap

系統(tǒng)會(huì)有一個(gè)默認(rèn)png圖片:icon.png 但是這個(gè)圖片中最外層會(huì)有白色的 比較討厭 現(xiàn)在以此為例 說(shuō)說(shuō)怎么截取 因?yàn)槠渫鈱訛榘咨?顯示不出來(lái) 所以我用了 *.9.png 作為其邊界

? Bitmap 相關(guān)2:Bitmap.createBitmap() 使用

?

?

[代碼 步驟]

1. 創(chuàng)建Bitmaop 且指向icon.png

    Bitmap ori = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon);
  

?

?

2. 創(chuàng)建布局文件 有2個(gè)ImageView 一個(gè)供原圖顯示 一個(gè)供切割后顯示

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layout"
    >
<ImageView  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/image1"
    android:layout_gravity="center_horizontal"
    />
<ImageView  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/image2"
    android:layout_gravity="center"
    />
</LinearLayout>

  

?

?

3. 初始化變量

    lLauout = (LinearLayout)findViewById(R.id.layout);
        
iv1 = (ImageView)findViewById(R.id.image1);
iv2 = (ImageView)findViewById(R.id.image2);
  

?

4. 得到原圖的寬度與高度 供后面使用

    width = ori.getWidth();
height = ori.getHeight();
  

?

5.? 定義變量 標(biāo)志切割位置 并初始化之

    int startX,startY,lengthX,lengthY;
  

?

    startX = 0;
startY = 0;

lengthX = width;
lengthY = height;
  

?

?

?6. 如何選取圖片位置

寫(xiě)道
函數(shù)原型: Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height)


方法1:不斷調(diào)整參數(shù):x,y,width,heighy

方法2:利用導(dǎo)航鍵 上下左右分別控制上述4變量


導(dǎo)航鍵 左: x
導(dǎo)航鍵 右: width
導(dǎo)航鍵 上: y
導(dǎo)航鍵 下: height

使之向圖片中央靠攏 且按下一下 移動(dòng)固定的距離

?

    public boolean onKeyDown(int keyCode, KeyEvent msg){
    	
    	switch(keyCode){
    	case KeyEvent.KEYCODE_DPAD_LEFT:
    		updateLeft();
    		break;
    		
    	case KeyEvent.KEYCODE_DPAD_RIGHT:
    		updateRight();
    		break;
    	case KeyEvent.KEYCODE_DPAD_UP:
    		updateUp();
    		break;
    	case KeyEvent.KEYCODE_DPAD_DOWN:
    		updateDown();
    		break;
    	case KeyEvent.KEYCODE_DPAD_CENTER:
    		showResult();
    		break;
    	}
    	
    	return false;
    }
  

?

?

7.? 還需要判斷移動(dòng)是否合理

    以下幾種情況不合理:

1. 當(dāng)圖形左邊 比 圖形最大寬度 還大
2. 當(dāng)圖形上邊 比 圖形最大高度 還大
3. 圖形寬度 或 高度 小于 0
  

?

    public boolean isUpdateOK(){
    	if((startX > lengthX)||(startY > lengthY)||(lengthX > 0)||(lengthY > 0)){
    		return false;
    	}
    	else {
    		return true;
    	}
    }
  

?

?

8. 具體移動(dòng)方法:

    public void updateLeft(){
    	startX += step;
    	lengthX = width-startX;
        lengthY = height-startY;
        
        if(isUpdateOK()){
        	target1.recycle();
        	
        	target1 = Bitmap.createBitmap(ori,startX, startY, lengthX, lengthY);
        	
        	iv2.setImageBitmap(target1);
        	
        	setContentView(lLauout);
        }
    }
    public void updateUp(){
    	startY += step;
    	lengthX = width-startX;
        lengthY = height-startY;
        
        if(isUpdateOK()){
        	target1.recycle();
        	
        	target1 = Bitmap.createBitmap(ori,startX, startY, lengthX, lengthY);
        	
        	iv2.setImageBitmap(target1);
        	
        	setContentView(lLauout);
        }
    }
    public void updateRight(){
        lengthX -= step;
        
        if(isUpdateOK()){
        	target1.recycle();
        	
        	target1 = Bitmap.createBitmap(ori,startX, startY, lengthX, lengthY);
        	
        	iv2.setImageBitmap(target1);
        	
        	setContentView(lLauout);
        }
    }
    public void updateDown(){
        lengthY -= step;
        
        if(isUpdateOK()){
        	target1.recycle();
        	
        	target1 = Bitmap.createBitmap(ori,startX, startY, lengthX, lengthY);
        	
        	iv2.setImageBitmap(target1);
        	
        	setContentView(lLauout);
        }
    }
    
    
    public void showResult(){
    	AlertDialog.Builder ab = new AlertDialog.Builder(this);
    	AlertDialog aDialog;
    	
    	ab.setMessage("startX:"+startX+"\n"+"startY:"+startY+"\n"+"lengthX:"+lengthX+"\n"+"lengthY:"+lengthY).setTitle("show result").show();;
    	aDialog = ab.create();

    	aDialog.show();
    	
    }
  

?

?

?

9.?emulator 運(yùn)行情況:?

? Bitmap 相關(guān)2:Bitmap.createBitmap() 使用

Bitmap 相關(guān)2:Bitmap.createBitmap() 使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲欧美无人区乱码 | 2022最新a精品视频在线观看 | 你下面好大好硬好想要 | 日本特黄的免费大片视频 | 日本jizzz| 日韩高清第一页 | 亚洲人人爱 | 国产午夜精品一区二区三区 | 成人福利短视频 | 亚洲欧美日韩中文综合在线不卡 | 波多野结衣xfplay在线观看 | 欧美日韩免费在线观看 | 久久亚洲欧美日本精品品 | 国产美女极品免费视频 | 亚洲aⅴ天堂| 日本在线你懂的 | 国产精品区二区三区日本 | 一级片一级片一级片一级片 | 毛片免费在线 | 日韩欧美亚洲一区 | 亚洲欧美在线精品一区二区 | 午夜激情影院 | 日韩在线精品视频 | 成人精品 | 欧洲精品一区二区三区在线观看 | 亚洲综合精品 | 欧美黄 片免费观看 | 手机看片日韩欧美 | 天天操夜夜操夜夜操 | 日本一区二区免费看 | av国产精品| 色婷婷色 | 天堂色在线 | 亚州 色毛片免费观看 | 国内精品一区二区2021在线 | 中文字幕国产日韩 | 天天天天天天天操 | 久久亚洲欧美成人精品 | 最新中文字幕在线 | 一区二区三区免费看 | 狠狠影院 |