Android设置壁纸的几种方案
Android设置壁纸有许多方法,主要思路有两种:
1:通过WallpaperManager设置
2:通过系统程序设置
下文将分开说明:
<1>通过WallpaperManager设置
该方法可以直接将图片置为壁纸,对于所有平台的Android系统都使用,但无法裁剪/调整图片。
try {WallpaperManager wpm = (WallpaperManager) getActivity().getSystemService(Context.WALLPAPER_SERVICE);if (wallpaper != null) {wpm.setBitmap(bitmap);Log.i("xzy", "wallpaper not null");}
} catch (IOException e) {Log.e(TAG, "Failed to set wallpaper: " + e);
}
AndroidManifest.xml中需要申明权限:
<uses-permission android:name = "android.permission.SET_WALLPAPER"/>
<2>通过系统程序设置
通过系统应用设置的优点是可以裁剪图片,设置后的壁纸效果最好,操作体验和平台保持一致。并且该方法不许要申明权限
可行的方法有两种
1:调用系统裁剪Activity,通过裁剪Activity设置壁纸:
Intent intent = new Intent("com.android.camera.CropImage");int width = getActivity().getWallpaperDesiredMinimumWidth();int height = getActivity().getWallpaperDesiredMinimumHeight();intent.putExtra("outputX", width);intent.putExtra("outputY", height);intent.putExtra("aspectX", width);intent.putExtra("aspectY", height);intent.putExtra("scale", true);intent.putExtra("noFaceDetection", true);intent.putExtra("setWallpaper", true);intent.putExtra("data", ((BitmapDrawable) wallpaper).getBitmap());startActivity(intent);
该方法有一个弊端,com.android.camera.CropImage是一个可选Action,而非标准Action,因此并分所有Android设备都支持该API,许多设备会出现ActivityNotFoundException.
2.调用系统的Intent.ACTION_ATTACH_DATA,该Intent会唤起所有的设置壁纸程序以及设置联系人头像程序,用户可以通过ChooseActivity进行选择:
该Intent是一个标准Intent,因此所有设置都会支持。
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.putExtra("mimeType", "image/*");Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getActivity().getContentResolver(),((BitmapDrawable) wallpaper).getBitmap(), null, null));intent.setData(uri);startActivityForResult(intent, SET_WALLPAPER);
以上这些方法推荐只用最后一种,原因很简单:体验好,适配成本低。
作者:xzy2046,转载需注明。博客主页:http://blog.csdn.net/xzy2046
Android设置壁纸的几种方案相关推荐
- Android 设置音量的几种方法
Android 设置音量的几种方法 Android 设置音量的几种方法 方法一.被动设置法 方法二.主动设置法 渐进设置 直接设置 按键设置 Android 设置音量的几种方法 在Android下,音 ...
- android壁纸设置,android设置壁纸 的方法
前几天看到豌豆荚上面风景壁纸的APP 下载得挺火,闲来无事心痒痒的想写一个壁纸程序.由于是Android开发新手,忘记了一个很重要的开发步骤,就是对权限的设置.开始以为自己写的壁纸设置程序有问题,经过 ...
- Android阴影实现的几种方案
作者:newki 链接: https://juejin.cn/post/7149706291261210654 圆角容器?自定义圆角容器?自定义圆角加阴影容器? 太难了,不知道大家有没有同款UI设计师 ...
- Android设置壁纸
1.设置壁纸,因为load图片时可能因为图片太大而OOM,目前有两种思路. sendUri为图片的URI. 1.调用系统intent来设置,即通过传递一个image对象,系统luancher选择可以处 ...
- android++设置壁纸,Android Launcher 设置壁纸
如果是KitKat以下版本,那么会调用以下方法: int width = getWallpaperDesiredMinimumWidth(); int height = getWallpaperDes ...
- android 设置壁纸,开启出现短暂黑屏问题
[解决] 千万不要去设置壁纸的大小:(调用如下接口,那么你就错了) int screenWidth = Resources.getSystem().getDisplayMetrics().widthP ...
- Android 设置壁纸被拉伸(固定壁纸 )
做一个设置壁纸的功能,漂漂亮亮的壁纸一设置就被拉伸得超级难看.有图有真相: 壁纸是这样的: 设置后就这样这样了: 修改代码后就这样这样了: 代码修改如下: 具体的宽和高可以根据需求修改 Wallpap ...
- Android性能优化的5种方案
指标 量化性能的指标有很多,但最重要的就是以下5种: 包大小 响应时间 内存 CPU 耗电量 优化性能就是可以从以上5点入手. 包大小优化 顾名思义就是减少apk包体积大小,apk大小主要取决于res ...
- android线程优先级大小,android 设置线程优先级 两种方式
1) android.os.Process.setThreadPriority (int priority)或android.os.Process.setThreadPriority (int tid ...
最新文章
- 云知声CEO黄伟:AI对产业的驱动不仅是创新更是颠覆
- Cesium官方教程8-- 几何体和外观效果
- python list 去重_Python中对列表list去重
- 鸡啄米vc++2010系列11(非模态对话框的创建)
- java实现系统多级文件夹复制
- jvm 调优_Java架构—JVM调优
- 如何调节电脑显示屏来保护双眼的小技巧
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
- 使用SniperPhish进行电子邮件钓鱼
- 1.实验:删除CentOS6下/boot/vmlinuz文件修复之
- android chrome 无法下载,Android Chrome浏览器将支持下载暂停和取消
- 彻底清除计算机病毒的方式是,彻底清除电脑病毒的小方法
- 新房子灶台风水方位设在什么地方比较好?
- 上亿会员 为b站会员购众筹项目打下消费基础
- 短视频开发,录制视频添加背景音乐功能实现
- 2019软件测试学习教程(学习路线+课程大纲+视频教程+学习工具)
- 如何理解ANOVA中的F值与P值
- C语言FILE详解(COME ON)
- LiveRTMP内置IPCamera实现RTMP直播摄像机功能
- Android killer 回编译失败
热门文章
- Spring:been的生命周期
- IPD解读—需求管理(OR)流程方法论
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- STFT和声谱图,梅尔频谱(Mel Bank Features)与梅尔倒谱(MFCCs)
- 互联网创业需要注意了!
- 计算机网络技术 选修 沪科版教案,高中物理第3章从电表电路到集成电路3.5逻辑电路与集成电路教案沪科版选修3_1...
- linux动态库so调用外部so,运行时出现undefined symbol
- SCU 4444 Travel 【次完全图最短路】
- 计算机如何安装无线网络适配器,无线网络适配器是什么,无线网络适配器如何设置...
- 乔布斯的康熙盛世,库克的雍正王朝——纪念乔布斯逝世5周年