編輯:關於Android編程
在做項目的時候,總是避免不了頭像的剪裁和選取,然而4.4以後 以前能夠使用的代碼 ,也用不了了。 做下記錄吧。因為下面代碼我用了幾次了。
以後直接復制粘貼。
intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, GALLERY_REQUEST_CODE);
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST_CODE);
private static int CAMERA_REQUEST_CODE = 1; private static int GALLERY_REQUEST_CODE = 2; private static int CROP_REQUEST_CODE = 3;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST_CODE) {
if (data == null) {
return;
} else { //拍照
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap bm = extras.getParcelable("data");
Uri uri = saveBitmap(bm);
startImageZoom(uri);
}
}
} else if (requestCode == GALLERY_REQUEST_CODE) {
if (data == null) {//相冊
return;
}
Uri uri;
uri = data.getData();
Uri fileUri = convertUri(uri);
startImageZoom(fileUri);
} else if (requestCode == CROP_REQUEST_CODE) {
if (data == null) {
return;
}//剪裁後的圖片
Bundle extras = data.getExtras();
if (extras == null) {
return;
}
Bitmap bm = extras.getParcelable("data");
ShowImageView(bm);
}
}
private Uri convertUri(Uri uri) {
InputStream is = null;
try {
is = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();
return saveBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private Uri saveBitmap(Bitmap bm) {
File tmpDir = new File(Environment.getExternalStorageDirectory()
+ "/xiaoxin");
if (!tmpDir.exists()) {
tmpDir.mkdir();
}
File img = new File(tmpDir.getAbsolutePath() + "love.png");
try {
FileOutputStream fos = new FileOutputStream(img);
bm.compress(Bitmap.CompressFormat.PNG, 85, fos);
fos.flush();
fos.close();
Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_SHORT).show();
return Uri.fromFile(img);
} catch (FileNotFoundException e) {
Toast.makeText(MainActivity.this, "失敗了", Toast.LENGTH_SHORT).show();
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "失敗了", Toast.LENGTH_SHORT).show();
return null;
}
}
/**
* 剪裁圖片
*
* @param uri
*/
private void startImageZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 150);
intent.putExtra("outputY", 150);
intent.putExtra("return-data", true);
startActivityForResult(intent, CROP_REQUEST_CODE);
}
如何做智能硬件開發 -- 直流馬達
第6節 直流馬達馬達是我們經常使用到的電動裝置,它可以將電能轉化成動能,驅動其他東西的運動。聽起來很抽象,舉幾個例子吧。我們小時候玩的四驅車,帶動輪子轉動的那個小裝置就是
三大框架SSH成長路程(六)
一對一雙向關聯映射(六)上篇博文一對一單向關聯映射(五),我們介紹了一對一的單向關聯映射,單向是指只能從人(Person)這端加載身份證端(IdCard),但是反過來,不
React Native 集成到已有項目
前言React Native已經出現很久了,有很多應用也在進行嘗試,前面我們也講述了怎麼創建React Native工程以及怎麼搭建原生語言與js的開發環境。但是在實際應
漫談android系統5
LED indicator 簡介所謂的LED indicator就是手機上面充電發短信的燈,有時會亮綠燈,有時會亮紅燈,有時一起亮(橙燈),主要用於提醒用戶電量、短信、電