編輯:關於Android編程
在android中選擇圖片是一個很常見的功能,圖片的來源通常情況下是從相機獲取和從相冊獲取兩種。
先來寫一個簡單的選擇按鈕和一個能顯示圖片的ImageView
接下來就是實現的邏輯
private String[] takePhotoitems;// 獲取照片的操縱選項
public static final int TAKE_PHOTO = 1;
public static final int CROP_PHOTO = 2;
private Button getPicture;
private ImageView picture;
private Uri imageUri;
設置按鈕的點擊事件
@Override
public void onClick(View v) {
takePhotoitems = new String[] { 選擇本地圖片, 拍照 };
imageUri = getImageUri();
new AlertDialog.Builder(this)
.setTitle(設置頭像)
.setItems(takePhotoitems,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
switch (which) {
case 0:
getImageUri();
Intent intent = new Intent(
Intent.ACTION_GET_CONTENT);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
image/*);
intent.setType(image/*);
intent.putExtra(crop, true);
intent.putExtra(scale, true);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
imageUri);
startActivityForResult(intent, CROP_PHOTO);
break;
case 1:
// 拍照
getImageUri();
if (isHasSdcard()) {
Intent takePhotoIntent = new Intent(
android.media.action.IMAGE_CAPTURE);
takePhotoIntent.putExtra(
MediaStore.EXTRA_OUTPUT,
imageUri);
startActivityForResult(takePhotoIntent,
TAKE_PHOTO);
} else {
Toast.makeText(MainActivity.this,
未檢測到sd卡, Toast.LENGTH_LONG)
.show();
}
break;
}
}
})
.setNegativeButton(取消, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
用到的兩個工具方法
/**
* 獲取圖片的路徑
*/
private Uri getImageUri() {
File outputImage = new File(Environment.getExternalStorageDirectory(),
tempImage.jpg);
if (outputImage.exists()) {
outputImage.delete();
}
try {
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
return Uri.fromFile(outputImage);
};
/**
* 判斷sd卡是否存在
*/
public static boolean isHasSdcard() {
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
return true;
} else {
return false;
}
}
獲取到圖片後進行裁剪
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PHOTO:
if (resultCode == RESULT_OK) {
Intent intent = new Intent(com.android.camera.action.CROP);
intent.setDataAndType(imageUri, image/*);
intent.putExtra(scale, true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CROP_PHOTO);
}
break;
case CROP_PHOTO:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = BitmapFactory
.decodeStream(getContentResolver().openInputStream(
imageUri));
picture.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
default:
break;
}
}
經過前兩篇blog的鋪墊,我們今天熱身一下,做個簡單的例子。目錄結構還是引用上篇blog的截圖。具體實現代碼:public class MainActivity exte
前言Android內置webkit內核的高性能浏覽器,而WebView則是在這個基礎上進行封裝後的一個 控件,WebView直譯網頁視圖,我們可以簡單的看作一個可以嵌套到
一、需求有時候應用需要在內部切換語言但又不影響系統的語言,比如是應用現在是中文的,系統語言也是中文的,我把應用的切換成英文顯示後系統語言還是中文的,系統語言切換後也不會被
由於第一次寫博客,裡面難免有些錯誤與不足,希望大家可以幫忙多多指點。下面我將從三個方面給大家介紹一下android開發吧,也是對我前一段時間學習的總結吧。第一,Andro