?Bitmap 創建
?
系統會有一個默認png圖片:icon.png 但是這個圖片中最外層會有白色的 比較討厭 現在以此為例 說說怎么截取 因為其外層為白色 顯示不出來 所以我用了 *.9.png 作為其邊界
?
?
[代碼 步驟]
1. 創建Bitmaop 且指向icon.png
Bitmap ori = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon);
?
?
2. 創建布局文件 有2個ImageView 一個供原圖顯示 一個供切割后顯示
<?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.? 定義變量 標志切割位置 并初始化之
int startX,startY,lengthX,lengthY;
?
startX = 0;
startY = 0;
lengthX = width;
lengthY = height;
?
?
?6. 如何選取圖片位置
方法1:不斷調整參數:x,y,width,heighy
方法2:利用導航鍵 上下左右分別控制上述4變量
導航鍵 左: x
導航鍵 右: width
導航鍵 上: y
導航鍵 下: height
使之向圖片中央靠攏 且按下一下 移動固定的距離
?
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.? 還需要判斷移動是否合理
以下幾種情況不合理:
1. 當圖形左邊 比 圖形最大寬度 還大
2. 當圖形上邊 比 圖形最大高度 還大
3. 圖形寬度 或 高度 小于 0
?
public boolean isUpdateOK(){
if((startX > lengthX)||(startY > lengthY)||(lengthX > 0)||(lengthY > 0)){
return false;
}
else {
return true;
}
}
?
?
8. 具體移動方法:
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 運行情況:?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

