Android调用相机与相册的方法1

简介: Android调用相机与相册的方法

操作流程

点击拍摄

点击头像(我这里使用的是ImageView控件),然后点击拍摄,去申请权限,允许则打开相机 拍摄 然后进去裁剪框 选取合适的位置合适的大小 点击√,即设置成功

效果图

点击相册选择

点击头像,点击相册选择,允许权限则进去图库,选择图片 截取图片,设置成功

效果图

拒绝权限的情况

点击禁止则无操作,勾选禁止后不再提示,则弹出自定义dialog提示框,点击取消即关闭dialog,点击去设置则进入应用设置页面

效果图

功能实现

项目配置

1.先在项目根目录的build.gradle的repositories添加:

allprojects {
     repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

【注意】切记不要跳过这一步,因为XUI目前只发布在jitpack平台上,跳过这一步会导致ERROR: Failed to resolve: com.github.xuexiangjys:XUI:x.x.x错误!!!

2.在build.gradle(:app)的dependencies添加:

  // 裁剪相关
    implementation 'com.github.yalantis:ucrop:2.2.6'
    // XUI dialog相关
    implementation 'com.github.xuexiangjys:XUI:1.1.9'
    implementation 'com.github.xuexiangjys.XUtil:xutil-core:2.0.0'
    // 权限相关
    implementation 'com.yanzhenjie:permission:2.0.2'
    // 加载图片
    implementation 'com.github.bumptech.glide:glide:4.13.1'

3.添加提示dialog样式

如果使用弹出提示的XUI自定义dialog则需要在AndroidManifest.xml中application的主题添加样式

添加以下样式:

<style name="Theme.HeadPhotoTest" parent="XUITheme.Phone">

    <!-- 自定义自己的主题样式 -->

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textAllCaps">false</item>

</style>

然后Ctrl点进colors.xml添加以下属性:


#2196F3

#121C4C

#2196F3

4.添加底部dialog样式

如果需要使用底部弹出dialog则需要在AndroidManifest.xml在application的主题中添加以下样式代码:

  <!-- dialog样式 -->
    <style name="DialogTheme" parent="@android:style/Theme.Dialog">
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
        <!-- 是否浮现在activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 模糊 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 遮罩层 -->
        <item name="android:backgroundDimAmount">0.5</item>
    </style>
    
  <!-- dialog的动画 -->
    <style name="main_menu_animStyle">
        <item name="android:windowEnterAnimation">@drawable/dialog_in_anim</item>
        <item name="android:windowExitAnimation">@drawable/dialog_out_anim</item>
    </style>
底部dialog弹出动画(dialog_in_anim.xml)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="0"
        android:fromYDelta="1000"
        android:toXDelta="0"
        android:toYDelta="0" />
</set>
底部dialog关闭动画(dialog_out_anim.xml)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="1000" />
</set>

5.添加权限

AndroidManifest.xml中加入以下权限代码:

  <!-- 请求拍摄权限-->
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 读写设备照片及文件-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

6.在AndroidManifest.xml中添加剪切activity活动

如果用到剪切功能需要添加,不用剪切功能则不需要添加

  <activity
        android:name="com.yalantis.ucrop.UCropActivity"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

Android调用相机与相册的方法2:https://developer.aliyun.com/article/1473508

目录
相关文章
|
17天前
|
XML Java Android开发
微信虚拟视频插件安卓,微信虚拟相机替换拍照,java源码分享
完整的相机应用项目包含三个主要文件:主活动实现、布局文件和清单文件。代码实现了相机预览、
|
2月前
|
Android开发 开发者
Android自定义view之利用drawArc方法实现动态效果
本文介绍了如何通过Android自定义View实现动态效果,重点使用`drawArc`方法完成圆弧动画。首先通过`onSizeChanged`进行测量,初始化画笔属性,设置圆弧相关参数。核心思路是不断改变圆弧扫过角度`sweepAngle`,并调用`invalidate()`刷新View以实现动态旋转效果。最后附上完整代码与效果图,帮助开发者快速理解并实践这一动画实现方式。
|
2天前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
33 11
|
11天前
|
Android开发 数据安全/隐私保护
手机微信虚拟视频聊天,安卓免root虚拟摄像头,免root虚拟hook相机
以上代码实现了一个完整的免root虚拟摄像头方案,通过Hook系统摄像头服务和微信视频通话接口
|
17天前
|
Java Android开发
安卓虚拟摄像头过人脸,免root虚拟hook相机,虚拟相机hook版【jar】
两种Hook Android相机的方法:Xposed模块和Frida脚本。Xposed模块需要安装在已root的设备
|
1月前
|
JavaScript Java API
ArkUI-X与Android桥接通信之方法回调
本文介绍了ArkUI与Android平台之间的消息传递机制,涵盖双向数据交互、方法调用及不同数据类型的处理。主要内容包括:1) ArkUI调用Android方法,通过`callMethod`实现;2) Android调用ArkUI方法,借助`registerMethod`注册并调用;3) ArkUI监听Android方法,支持方法注册与注销;4) 带回调的跨平台方法调用,支持无参与有参场景;5) 不同数据类型(如字符串、数组、对象)的传递示例。代码示例展示了TypeScript和Java的实现细节,帮助开发者理解桥接机制的具体应用。
|
9月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
308 15
Android 系统缓存扫描与清理方法分析
|
10月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
178 2
|
11月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
1616 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
缓存 Android开发 前端开发
Android应用开发—onSaveInstanceState方法什么时候被调用?
转载自onSaveInstanceState方法什么时候被调用?(转载/整理) 在 Activity 被销毁之前被调用来保存每个实例的状态,这样就可以保证该状态能够从 onCreate(Bundle) 或者onRestoreInstanceState(Bundle)恢复过来。
2652 0

热门文章

最新文章