編輯:關於Android編程
1,得到保存截圖文件的地址
private static final String IMAGE_FILE_LOCATION = Environment.getExternalStorageDirectory()+"/temp.jpg"; private Uri imageUri; imageUri = Uri.fromFile(new File(IMAGE_FILE_LOCATION));
2,相冊和拍照按鈕的點擊事件
// 相冊
imageViewLocalPhoto.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,//content://media/external/images/media
IMAGE_UNSPECIFIED);
startActivityForResult(intent, PHOTOZOOM);
}
});
// 拍照
imageViewTakePhoto.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(
Environment.getExternalStorageDirectory(), "temp.jpg")));
System.out.println("============="
+ Environment.getExternalStorageDirectory());
startActivityForResult(intent, PHOTOHRAPH);
}
});拍照和本地圖片傳入的uri不同
// 拍照 顯示圖片頁面
if (requestCode == PHOTOHRAPH) {
startPhotoZoom(imageUri);
}
// 讀取相冊縮放圖片 顯示圖片頁面
if (requestCode == PHOTOZOOM) {
startPhotoZoom(data.getData());
}public void startPhotoZoom(Uri uri, int flag) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//圖像輸出
intent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", false);//回調方法data.getExtras().getParcelable("data")返回數據為空
startActivityForResult(intent, PHOTORESOULT);
}
5,回調方法返回截圖結果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 處理結果 處理縮放過後的圖片
if (requestCode == PHOTORESOULT) {
flag_layout = "layout2";
Bundle extras = data.getExtras();
if (extras != null) {
photo = extras.getParcelable("data");
}
if(photo==null)//加載本地截圖
{
Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/temp.jpg");
imageView.setImageBitmap(bm);
}
else//加載接收的圖片數據
{
imageView.setImageBitmap(photo);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
傳統的截圖方法為:1,不加這句intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//圖像輸出,,
2,這句改為返回數據為true:intent.putExtra("return-data", true);
3,也就沒有剪切後的輸出圖片,通過data.getExtras().getParcelable("data")接收返回的圖像數據
說明:經試驗,傳統的截圖方法經常死機,報綁定數據過大的錯誤,所以改用本例的方法比較好用了,就是截好圖片後,直接加載本地圖片就好了
bug:如果刪除temp.jpg文件後,拍照截圖時會一直截刪掉的temp.jpg文件,本地圖片沒問題,再換回拍照截圖也沒問題了
Android動畫效果——1.幀動畫2.補間動畫3.跳轉畫面(三)
插值器類 xml屬性值 說明 LinearInterpolator @android:anim/linear_interpolatorr 動畫以均勻的速度改
android開發筆記之適配器
大家看到這個標題是不是覺得很詫異呢?什麼叫終極適配器,其實就是這種適配器是萬能的,所有需要使用適配器的組件,都可用這一個適配器就行。既然這樣,就來講講吧。效果:當然這是個
Android MarginDesign控件TabLayout導航欄使用詳解
TabLayout的使用簡單介紹比如在平常的項目中實現這樣的效果,一般都是都會使用viewPageIndicate等幾個開源框架直接實現,或者使用自定義的Horizont
android自定義View之仿通訊錄側邊欄滑動,實現A-Z字母檢索
我們的手機通訊錄一般都有這樣的效果,如下圖:OK,這種效果大家都見得多了,基本上所有的android手機通訊錄都有這樣的效果。那我們今天就來看看這個效果該怎麼實現。一.概