編輯:關於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文件,本地圖片沒問題,再換回拍照截圖也沒問題了
插值器類 xml屬性值 說明 LinearInterpolator @android:anim/linear_interpolatorr 動畫以均勻的速度改
大家看到這個標題是不是覺得很詫異呢?什麼叫終極適配器,其實就是這種適配器是萬能的,所有需要使用適配器的組件,都可用這一個適配器就行。既然這樣,就來講講吧。效果:當然這是個
TabLayout的使用簡單介紹比如在平常的項目中實現這樣的效果,一般都是都會使用viewPageIndicate等幾個開源框架直接實現,或者使用自定義的Horizont
我們的手機通訊錄一般都有這樣的效果,如下圖:OK,這種效果大家都見得多了,基本上所有的android手機通訊錄都有這樣的效果。那我們今天就來看看這個效果該怎麼實現。一.概