本文实例为大家分享了 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)

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: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">

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:id="@+id/image_grid"

android:layout_width="match_parent"

android:layout_height="match_parent" />

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

getSupportFragmentManager().beginTransaction()

.add(R.id.image_grid, Fragment.instantiate(this, MultiImageSelectorFragment.class.getName(), bundle))

.commit();

5.MultiImageSelectorFragment布局用gridview显示从相册获取的图片

xmlns:tools="http://schemas.android.com/tools"

android:background="@android:color/black"

android:layout_width="match_parent"

android:layout_height="match_parent">

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"/>

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">

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" />

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微信开发教程汇总》,欢迎大家学习阅读。

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

android 微信相册功能,Android仿微信选择图片和拍照功能相关推荐

  1. Xamarin.Forms 之我的花园 - 2.从照片库选择图片和拍照功能

    文章目录 1.介绍 2.预览 3.调试方式对比 4.MediaPlugin 5.权限设置 5.1 iOS权限设置 5.2 Android权限设置 1.修改MainActivity.cs 2.File ...

  2. Android 二维码扫描(仿微信界面),根据Google zxing

    Android 二维码扫描(仿微信界面),根据Google zxing Android项目开发中经常会用到二维码扫描,例如登陆.支付等谷歌方面已经有了一个开源库(地址: https://github. ...

  3. Android 使用 CameraX 快速实现仿微信短视频录制

    Android 使用 CameraX 快速实现仿微信短视频录制(轻触拍照.长按录像) https://github.com/ldlywt/MyCameraX 微信短视频android端 https:/ ...

  4. Android 音视频开发(三) -- Camera2 实现预览、拍照功能

    音视频 系列文章 Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍 ...

  5. 漂流瓶php源码,微信小程序之仿微信漂流瓶

    [实例简介] 微信小程序之仿微信漂流瓶 [实例截图] [核心代码] a4c6f919-add7-4dc7-bafa-9a884a00f2e3 └── wx_plp ├── app.js ├── app ...

  6. Android 音视频开发(二) -- Camera1 实现预览、拍照功能

    音视频 系列文章 Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍 ...

  7. Android端h5不能选择图片,weui公众号开发h5部分手机不能选择图片及拍照问题

    在使用weui采用h5进行公众号开发时,input file选择图片控件,在部分安卓手机不能拍照.不能选择图片. 经过创软公众号开发团队分析,将input代码设置如下方式即可选择图片或者拍摄图片,成功 ...

  8. Android 使用RecyclerView实现(仿微信)的联系人A-Z字母排序和过滤搜索功能

    之前做项目的时候遇到一个需求是实现品牌的字母排序功能,网上的资料很多,但是有一部分有bug,这篇文章是我学习和解决部分bug之后的总结.今天带来的是RecyclerView的A-Z字母排序和过滤搜索功 ...

  9. android 文字点击展开,仿微信朋友圈,文字展开全文,全文收起功能

    android:id="@+id/tv_expand_or_fold" android:layout_width="wrap_content" android: ...

最新文章

  1. VLAN-VTP-Trunk
  2. 查询高考成绩2021一分一段表,一分一段表查询2021 如何查询一分一段表
  3. 【操作】Nuxt.js安装
  4. 简单阻容降压电路图_X2安规电容用于阻容降压容量衰减原因及对策
  5. Anisotropic gauss filter
  6. [译]模型-视图-提供器 模式
  7. 两种方法清除Excel保护密码
  8. android 那几种动画,Android 动画实现几种方案
  9. c mysql 双主复制_mysql双主复制及使用keepalived作高可用的配置详解
  10. python logging模块使用教程
  11. pp2使用需要java_新GRE模考软件POWERPREP2安装和使用说明(图解)
  12. python 计算数字位数_Python 统计位数为偶数的数字的代码
  13. 【计数网络】梯度累加增加LCFCN的BatchSize
  14. Vue-pdf预览pdf文档
  15. _kbhit函数详解
  16. 2013网易校园招聘笔试题
  17. TAPA认证辅导,TAPA全球委员会正式发布了《运输供应商最低安全要求》
  18. onmp mysql端口_ONMP 安装教程
  19. 储能变电站互动系统通讯协议 (征求意见稿)
  20. ios 实现价钱打折效果 数字上划横线

热门文章

  1. 数据库(第一章习题和答案)
  2. LBP特征原理及C实现
  3. Python学习(十一)——matplotlib与可视化
  4. SAP部分清账和剩余清账
  5. 如何做个直播应用建设?
  6. 直播场控话术总结?网红直播间控场欢迎语大全第一期
  7. Linux下QT更改系统时间并同步到硬件时钟
  8. 【原创】M3U8文件视频下载工具
  9. 普通人解决问题,高手解决提出问题的人
  10. Java毕设项目蛋糕店会员系统(java+VUE+Mybatis+Maven+Mysql)