国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android仿微信選擇圖片和拍照功能

2019-12-12 04:29:42
字體:
來源:轉載
供稿:網友

本文實例為大家分享了 Android微信選擇圖片的具體代碼,和微信拍照功能,供大家參考,具體內容如下

1.Android6.0系統,對于權限的使用都是需要申請,選擇圖片和拍照需要申請Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE這兩個權限。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {   ActivityCompat.requestPermissions((Activity) this,     new String[] { Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},     REQUEST_STORAGE_READ_ACCESS_PERMISSION);  }

2.通過圖片選擇器MultiImageSelector來管理: 選擇模式、最大選擇數量、是否啟動相機等功能。

3.點擊圖片選擇按鈕跳轉到MultiImageSelectorActivity類,其布局如下:(一個Toobar + 一個FrameLayout)

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:background="#181819" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar  android:id="@+id/toolbar"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:background="@color/mis_actionbar_color"  app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"  android:minHeight="?android:attr/actionBarSize">  <Button   android:id="@+id/commit"   android:background="@drawable/mis_action_btn"   android:minHeight="1dp"   android:minWidth="1dp"   android:layout_marginRight="16dp"   android:paddingLeft="10dp"   android:paddingRight="10dp"   android:paddingTop="5dp"   android:paddingBottom="5dp"   android:textColor="@color/mis_default_text_color"   android:textSize="14sp"   android:layout_gravity="right"   android:layout_width="wrap_content"   android:layout_height="wrap_content" /> </android.support.v7.widget.Toolbar> <FrameLayout  android:id="@+id/image_grid"  android:layout_width="match_parent"  android:layout_height="match_parent" /></LinearLayout>

4.調用如下方法填充展示圖片的fragment(MultiImageSelectorFragment)。

   getSupportFragmentManager().beginTransaction()     .add(R.id.image_grid, Fragment.instantiate(this, MultiImageSelectorFragment.class.getName(), bundle))     .commit();

5.MultiImageSelectorFragment布局用gridview顯示從相冊獲取的圖片

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:background="@android:color/black" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView  android:id="@+id/grid"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:horizontalSpacing="@dimen/mis_space_size"  android:verticalSpacing="@dimen/mis_space_size"  android:paddingBottom="?android:attr/actionBarSize"  android:clipToPadding="false"  android:numColumns="3"/> <RelativeLayout  android:clickable="true"  android:id="@+id/footer"  android:background="#cc000000"  android:layout_alignParentBottom="true"  android:layout_width="match_parent"  android:layout_height="?android:attr/actionBarSize">  <Button   android:id="@+id/category_btn"   android:paddingLeft="16dp"   android:paddingRight="16dp"   android:layout_centerVertical="true"   android:textColor="@color/mis_folder_text_color"   tools:text="所有圖片"   android:textSize="16sp"   android:gravity="center_vertical"   android:drawableRight="@drawable/mis_text_indicator"   android:drawablePadding="5dp"   android:background="@null"   android:singleLine="true"   android:ellipsize="end"   android:layout_width="wrap_content"   android:layout_height="match_parent" />  </RelativeLayout></RelativeLayout>

6調用android.support.v4.app.LoaderManager.class類里面的LoaderCallbacks方法,等加載完成后給mImageAdapter設置數據。

mImageAdapter.setData(images);

7.當允許拍照的時候,顯示拍照按鈕,調用系統相機功能。

 mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {    if (mImageAdapter.isShowCamera()) {     if (i == 0) {      showCameraAction();     } else {      Image image = (Image) adapterView.getAdapter().getItem(i);      selectImageFromGrid(image, mode);     }    } else {     Image image = (Image) adapterView.getAdapter().getItem(i);     selectImageFromGrid(image, mode);    }   }  });

調用相機功能

 /**  * Open camera  */ private void showCameraAction() {  if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)    != PackageManager.PERMISSION_GRANTED){   requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,     getString(R.string.mis_permission_rationale_write_storage),     REQUEST_STORAGE_WRITE_ACCESS_PERMISSION);  }else {   Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);   if (intent.resolveActivity(getActivity().getPackageManager()) != null) {    try {     mTmpFile = FileUtils.createTmpFile(getActivity());    } catch (IOException e) {     e.printStackTrace();    }    if (mTmpFile != null && mTmpFile.exists()) {     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));     startActivityForResult(intent, REQUEST_CAMERA);    } else {     Toast.makeText(getActivity(), R.string.mis_error_image_not_exist, Toast.LENGTH_SHORT).show();    }   } else {    Toast.makeText(getActivity(), R.string.mis_msg_no_camera, Toast.LENGTH_SHORT).show();   }  } }

選擇圖片

 /**  * notify callback  * @param image image data  */ private void selectImageFromGrid(Image image, int mode) {  if(image != null) {   if(mode == MODE_MULTI) {    if (resultList.contains(image.path)) {     resultList.remove(image.path);     if (mCallback != null) {      mCallback.onImageUnselected(image.path);     }    } else {     if(selectImageCount() == resultList.size()){      Toast.makeText(getActivity(), R.string.mis_msg_amount_limit, Toast.LENGTH_SHORT).show();      return;     }     resultList.add(image.path);     if (mCallback != null) {      mCallback.onImageSelected(image.path);     }    }    mImageAdapter.select(image);   }else if(mode == MODE_SINGLE){    if(mCallback != null){     mCallback.onSingleImageSelected(image.path);    }   }  } }

本文已被整理到了《Android微信開發教程匯總》,歡迎大家學習閱讀。

源碼下載:http://xiazai.VeVB.COm/201611/yuanma/AndroidselectPicture(VeVB.COm).rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溆浦县| 景德镇市| 麻栗坡县| 红桥区| 巩义市| 景宁| 北票市| 津南区| 汪清县| 陈巴尔虎旗| 交城县| 聂拉木县| 安康市| 托克托县| 丹巴县| 喀喇| 兴化市| 海兴县| 凉城县| 自治县| 南充市| 上虞市| 石嘴山市| 渭南市| 肇州县| 苍梧县| 依兰县| 成武县| 光山县| 苍溪县| 海安县| 哈尔滨市| 芦山县| 惠来县| 衡南县| 酒泉市| 金门县| 南召县| 临泽县| 蛟河市| 泰宁县|