目录

  • 内容概要
  • 所需方法
  • Mainfest中加入权限:
  • 布局代码
  • ImageAdapter类
  • main代码
  • 实现效果图

内容概要

可以选择自己喜欢的图片进行壁纸设置

所需方法

1、使用WallpaperManager的setResource(int ResourceID)方法2、使用WallpaperManager的setBitmap(Bitmap bitmap)方法3、重写ContextWrapper 类中提供的setWallpaper()4.传入9张自己喜欢的图片,命名image1-image9

Mainfest中加入权限:

<uses-permission android:name="android.permission.SET_WALLPAPER"/>

布局代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:background="#000000"tools:context=".MainActivity" ><ImageSwitcherandroid:id="@+id/ImageSwitcher"android:layout_width="fill_parent"android:layout_height="370dp"></ImageSwitcher><Galleryandroid:id="@+id/Gallery"android:layout_width="fill_parent"android:layout_height="80dp"android:layout_below="@+id/ImageSwitcher"  /><Buttonandroid:id="@+id/BtnGo"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_below="@+id/Gallery"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="@string/BtnGo" />
</RelativeLayout>

ImageAdapter类

使用Gallery来实现一个可以供用户选择的缩略图列表,当用户选择列表中的图像时,会在ImageSwitcher控件中显示出当前图像,当点击Button时,当前图片将被设置为壁纸。其实这里的ImageSwitcher完全可以替换为ImageView,考虑到ImageSwitcher可以提供较好的动画效果,所以我们在这里选择了ImageSwitcher。同样地,我们继续使用Android开发学习之Gallery中的那个ImageAdapter类:

代码:

package com.android.gallery2switcher;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;public class ImageAdapter extends BaseAdapter{//类成员myContext为context父类private Context myContext;private int[] myImages;//构造函数,有两个参数,即要存储的Context和Images数组public ImageAdapter(Context c,int[] Images){// TODO Auto-generated constructor stubthis.myContext=c;this.myImages=Images;}//返回所有的图片总数量@Overridepublic int getCount(){return this.myImages.length;}//利用getItem方法,取得目前容器中图像的数组ID@Overridepublic Object getItem(int position){return position;}@Overridepublic long getItemId(int position){return position;}//取得目前欲显示的图像的VIEW,传入数组ID值使之读取与成像@Overridepublic View getView(int position, View convertView, ViewGroup parent){ImageView image=new ImageView(this.myContext);image.setImageResource(this.myImages[position]);image.setScaleType(ImageView.ScaleType.FIT_XY);image.setAdjustViewBounds(true);return image;}}

main代码

package com.android.gallery2switcher;
import java.io.IOException;import android.os.Bundle;
import android.app.Activity;
import android.app.WallpaperManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;public class MainActivity extends Activity {Gallery mGallery;ImageSwitcher mSwitcher;Button BtnGo;int[] Resources=new int[]{R.drawable.image0,R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image8};int index;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//不显示标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);mGallery=(Gallery)findViewById(R.id.Gallery);mSwitcher=(ImageSwitcher)findViewById(R.id.ImageSwitcher);//实现ImageSwitcher的工厂接口mSwitcher.setFactory(new ViewFactory(){@Overridepublic View makeView(){ImageView i = new ImageView(MainActivity.this);i.setBackgroundColor(0xFF000000);i.setScaleType(ImageView.ScaleType.FIT_CENTER);i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));return i;}});//设置资源mSwitcher.setImageResource(Resources[0]);//设置动画mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));BtnGo=(Button)findViewById(R.id.BtnGo);BtnGo.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0){SetWallPaper();}});ImageAdapter mAdapter=new ImageAdapter(this,Resources);mGallery.setAdapter(mAdapter);mGallery.setOnItemSelectedListener(new OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView<?> Adapter, View view,int position, long id){//设置图片mSwitcher.setImageResource(Resources[position]);//获取当前图片索引index=position;}@Overridepublic void onNothingSelected(AdapterView<?> arg0){}});}//设置壁纸public void SetWallPaper(){WallpaperManager mWallManager=WallpaperManager.getInstance(this);try{mWallManager.setResource(Resources[index]);}catch (IOException e){e.printStackTrace();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu){return true;}}

实现效果图


可左右拖动:
点击设置壁纸后:

作者:黄伟龙
原文链接:https://blog.csdn.net/qq_50808543/article/details/112081058

Android开发 设置手机壁纸相关推荐

  1. android 手机壁纸源码,Android设置手机壁纸-源码(WallPaper)

    Android设置手机壁纸-源码(WallPaper) /** * Andorid设置手机屏幕的壁纸 * * @description: * @author ldm * @date 2016-5-4 ...

  2. Android开发之手机铃声代码实现

    Android开发之手机铃声代码实现 [IT168技术]对于Android应用开发来说,手机铃声是一个非常重要的需求,网上查了很多例子,都有点问题,综合几个自己写了个可以设置铃声.通知声音.闹钟声音和 ...

  3. Android设置手机壁纸(WallPaper)

    /*** Andorid设置手机屏幕的壁纸* * @description:* @author ldm* @date 2016-5-4 下午3:08:56*/ public class SetWall ...

  4. Android 开发 设置banner圆角,滑动时,图片圆角失效

    Android 开发中有时需要设置banner图片以圆角显示,设置圆角简单,可以使用自定义ImageView, 但是在滑动过程中会出现直角的情况,这时,只需要对父View进行裁剪即可: main_ba ...

  5. android开发获取手机屏幕分辨率

    android开发基础过程中获取手机屏幕分辨率用来加载不同的UI,图片等,如何获取手机屏幕分辨率? DisplayMetrics displayMetrics=new DisplayMetrics() ...

  6. XE5 Android 开发实现手机打电话和发短信 [转]

    其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍. 1.短信息.很简单 方法a.不使用Intent ...

  7. delphi android 短信,delphi xe5 android 开发实现手机打电话和发短信

    其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍. 1.短信息.很简单 方法a.不使用Intent ...

  8. android 开发 华为手机型号,华为手机用户可以体验Android P了!9款华为机型开放EMUI 9.0升级...

    [天极网手机频道]根据往年的惯例,华为手机应该会在国内首发Android P.不过令人意外的是,这一次一加手机抢先为用户升级了Android P系统.不过华为毕竟是国产手机力的老大,基于Android ...

  9. android 读取usb 文件,android开发:手机连接电脑读取文件

    满意答案 pretty_102 2013.05.16 采纳率:47%    等级:10 已帮助:967人 展开全部 一.打开手机USB调试模式 打开手机系统设置:[菜单(menu)]->[设置] ...

最新文章

  1. NHibernate.Profiler 使用教程
  2. linux i3如何运行qq,linux qq (CPU :i3)怎么安装?
  3. setTimeout 的定时器的妙用
  4. go 返回mysql数组_Go基础之--操作Mysql(一)
  5. vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...
  6. Lua学习笔记(5): 表
  7. 苹果手机编辑word_苹果手机的安全性真的太好了,这样加密,重要文件不怕泄密啦...
  8. Install Kernel 3.10 on CentOS 6.5
  9. SNMP报文抓取与分析(一)
  10. 制作OpenStack Windows Server 2016镜像
  11. 基于logistic模型,GM模型和Leslie模型全国人口预测
  12. tolua unity 报错_Unity Editor + tolua 在 Linux 下的 runtime 问题
  13. 服务器虚拟化的分类宿主模型,虚拟化分类
  14. 查看电脑重启日志_win10中查看开关机时间及查看admin的RID的方法
  15. Labplus:Scratch创作工具的替代与进步
  16. 高并发核心技术Redis系列(七)--------Jedis操作Redis
  17. 数据库高并发解决方案(二)部署优化
  18. 广州成人大学哪个学校最好
  19. C++后端开发知识点总结
  20. iPhone 6/Plus/5s/三星S5谁的屏幕更好?

热门文章

  1. MySQLSyntaxErrorException: Unknown database
  2. android 更换桌面名称_更改安卓软件名称 android修改应用程序名称
  3. 数据分析之《我不是药神》
  4. 【CSS特效扫盲】精选40种纯CSS特效应用实例,肝了10个晚上整理纯CSS特效(上)(附源码下载)
  5. 用python-rtmidi捕获MIDI键盘的输入,并回放MIDI消息
  6. MD5骨骼动画模型加载
  7. 如何选择合适的统计学方法
  8. 服务器连接盘柜后盘符空间显示不对,服务器连接磁盘阵列柜
  9. c语言编程基础之IPC共享内存
  10. C语言:记录zmq订阅地址ipc文件问题