欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)拍照截取和相冊圖片截取

 更新時間:2016年12月21日 11:53:26   作者:j_yangjie0227  
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)拍照截取和相冊獲取圖片截取,具有一定的參考價值,感興趣的小伙伴們可以參考一下

關(guān)于拍照截取和相冊截取,看了網(wǎng)上很多資料,自己整理了一份比較詳細(xì)的,供有需要的人參考

1  拍照

原理就是通過intent調(diào)用系統(tǒng)的相機(jī),拍完照在回調(diào)進(jìn)行操作,成功獲取到拍完照的圖片根據(jù)uri調(diào)用系統(tǒng)的裁剪頁面,裁剪完也是在回調(diào)中進(jìn)行處理,顯示在頁面的imageview中。

2  相冊選取圖片

原理也是通過intent打開系統(tǒng)的圖片,用戶選擇完成以后在回調(diào)中根據(jù)圖片的uri調(diào)用系統(tǒng)的裁剪頁面,同上。

首先,定義幾個常量

public static final int TAKE_PHOTO = 1; 
public static final int CROP_PHOTO = 2; 
public static final int ACTION_CHOOSE=3; 
private Uri imageUri; //圖片路徑 
private String filename; //圖片名稱 

然后在拍照和相冊選擇的按鈕中處理事件

@Override 
  public void onClick(View v) { 
    switch (v.getId()) { 
      case R.id.bt1:  //拍照截取 
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); 
        Date date = new Date(System.currentTimeMillis()); 
        filename = format.format(date); 
        File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 
        File outputImage = new File(path, filename +".jpg"); 
        try { 
          if (outputImage.exists()) { 
            outputImage.delete(); 
          } 
          outputImage.createNewFile(); 
        } catch (IOException e) { 
          e.printStackTrace(); 
        } 
        //將File對象轉(zhuǎn)換為Uri并啟動照相程序 
        imageUri = Uri.fromFile(outputImage); 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //照相 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //指定圖片輸出地址 
        startActivityForResult(intent, TAKE_PHOTO); //啟動照相 
        break; 
      case R.id.bt2:  //相冊選取 
        Intent intent2 = new Intent(Intent.ACTION_PICK); 
        intent2.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*"); 
        startActivityForResult(intent2,ACTION_CHOOSE); 
        break; 
    } 
  } 

最主要的在回調(diào)中的執(zhí)行

// 使用startActivityForResult返回結(jié)果時調(diào)用的方法 
  @Override 
  protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode!=RESULT_OK){ 
      Toast.makeText(this, "取消了", Toast.LENGTH_SHORT).show(); 
      return; 
    } 
    switch (requestCode) { 
      case TAKE_PHOTO:  //拍照的回調(diào) 
        cropImage(); 
        break; 
      case ACTION_CHOOSE:  //選擇照片的回調(diào) 
        imageUri = data.getData(); 
        cropImage(); 
        break; 
      case CROP_PHOTO:  //裁剪完照片的回調(diào) 
        showPic(); 
        break; 
      default: 
        break; 
    } 
  } 

裁剪圖片的方法

/** 
 * 裁剪圖片 
 **/ 
private void cropImage() { 
  Intent intent = new Intent("com.android.camera.action.CROP"); //剪裁 
  intent.setDataAndType(imageUri, "image/*"); 
  intent.putExtra("scale", true); 
  //設(shè)置寬高比例 
  intent.putExtra("aspectX", 1); 
  intent.putExtra("aspectY", 1); 
  //設(shè)置裁剪圖片寬高 
  intent.putExtra("outputX", 340); 
  intent.putExtra("outputY", 340); 
  intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
  Toast.makeText(MainActivity.this, "剪裁圖片", Toast.LENGTH_SHORT).show(); 
  //廣播刷新相冊 
  Intent intentBc = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
  intentBc.setData(imageUri); 
  this.sendBroadcast(intentBc); 
  startActivityForResult(intent, CROP_PHOTO); //設(shè)置裁剪參數(shù)顯示圖片至ImageView 
} 

過程比較簡單,可能會有一些判斷的地方?jīng)]有處理,如果有不對的地方希望有高手可以幫忙改進(jìn),謝謝~~

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android利用Sensor(傳感器)實現(xiàn)水平儀功能

    Android利用Sensor(傳感器)實現(xiàn)水平儀功能

    這篇文章主要為大家詳細(xì)介紹了Android利用Sensor傳感器實現(xiàn)水平儀功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android通過交互實現(xiàn)貝塞爾曲線的繪制

    Android通過交互實現(xiàn)貝塞爾曲線的繪制

    本篇我們將介紹簡單的交互式繪圖,通過獲取觸控位置來設(shè)定貝塞爾曲線的控制點,從而實現(xiàn)交互式繪制曲線,感興趣的小伙伴可以了解一下
    2022-05-05
  • Input系統(tǒng)之InputReader處理觸摸事件案例

    Input系統(tǒng)之InputReader處理觸摸事件案例

    這篇文章主要為大家介紹了Input系統(tǒng)之InputReader處理觸摸事件案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android源碼探究之BaseDexClassLoader的使用

    Android源碼探究之BaseDexClassLoader的使用

    今天解決一個插件化問題的時候,竟然發(fā)現(xiàn)SO沒有正常加載,很怪異,最終排查下來發(fā)現(xiàn)竟然是參數(shù)傳入錯誤導(dǎo)致的。這就扯到了本文的標(biāo)題上了,BaseDexClassLoader中的4個參數(shù)該如何傳入,傳入的又是什么呢
    2022-08-08
  • Android實現(xiàn)蒙板效果

    Android實現(xiàn)蒙板效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)蒙板效果的關(guān)鍵性代碼,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Android編程之TextView的字符過濾功能分析

    Android編程之TextView的字符過濾功能分析

    這篇文章主要介紹了Android編程之TextView的字符過濾功能,結(jié)合實例形式分析了TextView控件實現(xiàn)字符過濾的相關(guān)技巧與使用方法,需要的朋友可以參考下
    2016-01-01
  • Android 手勢操作編程詳解

    Android 手勢操作編程詳解

    本文主要介紹Android 手勢操作,這里整理了手勢操作的詳細(xì)資料和介紹相應(yīng)方法,有需要的小伙伴可以參考下
    2016-08-08
  • Android音樂播放器制作 加入控制臺(三)

    Android音樂播放器制作 加入控制臺(三)

    這篇文章主要為大家詳細(xì)介紹了Android音樂播放器的制作方法,如何加入控制臺,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android SQLite基本用法詳解

    Android SQLite基本用法詳解

    這篇文章主要介紹了Android SQLite基本用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Android實現(xiàn)顏色漸變動畫效果

    Android實現(xiàn)顏色漸變動畫效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)顏色漸變動畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論