Android仿微信选择图片和拍照功能

Android仿微信选择图片和拍照功能,第1张

概述本文实例为大家分享了Android微信选择图片的具体代码,和微信拍照功能,供大家参考,具体内容如下

本文实例为大家分享了 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.jb51.net/201611/yuanma/AndroidselectPicture(jb51.net).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android仿微信选择图片和拍照功能全部内容,希望文章能够帮你解决Android仿微信选择图片和拍照功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存