今天和大家分享的是关于在android中设置壁纸的方法,在android中设置壁纸的方法有三种,分别是:

1、使用wallpapermanager的setresource(int resourceid)方法

2、使用wallpapermanager的setbitmap(bitmap bitmap)方法

3、重写contextwrapper 类中提供的setwallpaper()

除此之外,我们还需要在应用程序中加入下列权限:

下面我们以此为基本方法,来实现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" >

android:id="@+id/imageswitcher"

android:layout_width="fill_parent"

android:layout_height="370dp">

android:id="@+id/gallery"

android:layout_width="fill_parent"

android:layout_height="80dp"

android:layout_below="@+id/imageswitcher"  />

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

在这里我们使用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 stub

this.mycontext=c;

this.myimages=images;

}

//返回所有的图片总数量

@override

public int getcount()

{

return this.myimages.length;

}

//利用getitem方法,取得目前容器中图像的数组id

@override

public object getitem(int position)

{

return position;

}

@override

public long getitemid(int position)

{

return position;

}

//取得目前欲显示的图像的view,传入数组id值使之读取与成像

@override

public 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;

}

}

现在,我们就可以开始编写程序了,后台的代码如下:

复制代码 代码如下:

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;

@override

protected 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()

{

@override

public 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()

{

@override

public void onclick(view arg0)

{

setwallpaper();

}

});

imageadapter madapter=new imageadapter(this,resources);

mgallery.setadapter(madapter);

mgallery.setonitemselectedlistener(new onitemselectedlistener()

{

@override

public void onitemselected(adapterview> adapter, view view,int position, long id)

{

//设置图片

mswitcher.setimageresource(resources[position]);

//获取当前图片索引

index=position;

}

@override

public void onnothingselected(adapterview> arg0)

{

}

});

}

//设置壁纸

public void setwallpaper()

{

wallpapermanager mwallmanager=wallpapermanager.getinstance(this);

try

{

mwallmanager.setresource(resources[index]);

}

catch (ioexception e)

{

e.printstacktrace();

}

}

@override

public boolean oncreateoptionsmenu(menu menu)

{

return true;

}

}

可以看到,在使用imageswitcher的时候,我们需要实现它的工厂接口,并且这里的makeview()方法和baseadapter里的getview()方法是一样的,即返回一个view视图。我们imageswitcher给使用了系统默认的动画效果。最终运行效果如下:

android 壁纸服务,Android开发学习之WallPaper设置壁纸详细介绍与实例相关推荐

  1. android 壁纸服务,Android视频壁纸的实现

    视频壁纸属于动态壁纸,所以视频壁纸就可以用Android系统提供的动态壁纸服务来实现.首先先介绍一下在实现过程中会用到的几个类. WallpaperManager Android提供的用于管理壁纸的类 ...

  2. 服务端开发学习路径图,心疼小哥哥们

    关注微信公众号<小姐姐味道>获取更多-- 在github上看到一种图的表现形式很不错(github.com/kamranahmed- ),迫不及待的自己做了一张:服务端开发学习路径图,表现 ...

  3. Oracle中job_type,【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例

    天萃荷净 分享一篇关于Oracle DBMS_SCHEDULER详细介绍与使用案例 1.通过DBMS_SCHEDULER.CREATE_JOB直接创建job SQL> create table ...

  4. android 界面组件,安卓开发学习周第三篇——Android中的UI组件

    原标题:安卓开发学习周第三篇--Android中的UI组件 在Android APP中,所有的用户界面元素都是由View和ViewGroup的对象构成的.View是绘制在屏幕上的用户能与之交互的一个对 ...

  5. 快速了解历史Android操作系统版本(开发学习攻略)

    前言 从毕业后到做开发已经两年多了,刚开始学习android时,觉的它很新奇,基本上朋友每个人都有一部手机,深深了解这个专业后,发现做一名Android开发师真的挺自豪的,是IT让我有了新的人生方向, ...

  6. android 闹钟服务,android开发笔记之 AlarmManager(闹钟服务)

    手机闹钟服务AlarmManager AlarmManager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括Activity,Service,Broadcast ...

  7. android 打印机服务,Android系统打印服务插件printservice开发

    一 简介 从Android4.4开始,系统加入了打印相关的API,可以通过系统打印服务实现打印.对于需要使用打印功能的APP可参考官方教程接入打印服务. 这不是本文的内容,本文介绍打印机厂商如何使自己 ...

  8. Android Native 代码NDK开发学习笔记

    引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...

  9. Android——Cocosd2d-x手机游戏开发学习思路

    手机 APP 应用如雨后春笋般冒了出来,而在众多的 APP 应用中,游戏占据了半壁江山.它丰富着人们的业余生活,增进了人们之间的沟通交流.也有许多开发的朋友对游戏开发情有独钟,他们不止是享受着有很多的 ...

最新文章

  1. Redis缓存穿透击穿雪崩
  2. mysql v8 漏洞_mysql'密码安全 - osc_v8gts6gd的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. hdu1799 循环多少次?(组合递推公式的使用)
  4. 插入排序Insertion sort 2
  5. regardless what you do
  6. 缓存-分布式锁-Redisson-信号量测试
  7. vscode setting json_win10+letex+vscode+texlive+latex workshop+sumatrapdf
  8. Asp.net2.0 学习资源(转载)
  9. qq群发信息显示服务器检测到,关于如何突破QQ群发消息屏蔽或限制经验总结
  10. mysql中的内置函数
  11. Luogu4755 Beautiful Pair 最值分治、主席树
  12. [洛谷P4838]P哥破解密码
  13. PET,CT图像融合笔记
  14. Ubuntu 14.04 卸载搜狗拼音输入法及后续问题解决
  15. 在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升
  16. 寒衣节的由来和习俗,你知道吗?
  17. 五万字 | Hive知识体系保姆级教程
  18. 面朝大海,春暖花开,有wifi
  19. 淘宝API卖家/买家相关接口列表与说明
  20. 从管理看:华为如何应对全球化带来的挑战?

热门文章

  1. 阿里云视频点播PHP sdk上传文件
  2. GatewayFilter Factories
  3. H5微场景设计和应用
  4. 悲痛中提醒大家注意安全(深圳事件,有些恐怖),大家可要注意啊!
  5. arduino水温度传感器数字显示_创客出品_Arduino智能温度监测器
  6. OpenWrt软路由系统网络代理,观看Google-TV
  7. Unity【Multiplayer 多人在线】- Socket 通用客户端网络模块(一)、Connect 连接服务端
  8. 整机性能测试软件,整机性能测试—ZD 系列软件
  9. java使用ews-java-api发送邮件(包括附件和内联图片处理)
  10. 使用开源项目【Banner】实现轮播图效果(带小圆点)