android 壁纸服务,Android开发学习之WallPaper设置壁纸详细介绍与实例
今天和大家分享的是关于在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设置壁纸详细介绍与实例相关推荐
- android 壁纸服务,Android视频壁纸的实现
视频壁纸属于动态壁纸,所以视频壁纸就可以用Android系统提供的动态壁纸服务来实现.首先先介绍一下在实现过程中会用到的几个类. WallpaperManager Android提供的用于管理壁纸的类 ...
- 服务端开发学习路径图,心疼小哥哥们
关注微信公众号<小姐姐味道>获取更多-- 在github上看到一种图的表现形式很不错(github.com/kamranahmed- ),迫不及待的自己做了一张:服务端开发学习路径图,表现 ...
- Oracle中job_type,【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例
天萃荷净 分享一篇关于Oracle DBMS_SCHEDULER详细介绍与使用案例 1.通过DBMS_SCHEDULER.CREATE_JOB直接创建job SQL> create table ...
- android 界面组件,安卓开发学习周第三篇——Android中的UI组件
原标题:安卓开发学习周第三篇--Android中的UI组件 在Android APP中,所有的用户界面元素都是由View和ViewGroup的对象构成的.View是绘制在屏幕上的用户能与之交互的一个对 ...
- 快速了解历史Android操作系统版本(开发学习攻略)
前言 从毕业后到做开发已经两年多了,刚开始学习android时,觉的它很新奇,基本上朋友每个人都有一部手机,深深了解这个专业后,发现做一名Android开发师真的挺自豪的,是IT让我有了新的人生方向, ...
- android 闹钟服务,android开发笔记之 AlarmManager(闹钟服务)
手机闹钟服务AlarmManager AlarmManager通常用来开发手机闹钟,并且它是一个全局定时器,可在指定时间或指定周期启动其他组件(包括Activity,Service,Broadcast ...
- android 打印机服务,Android系统打印服务插件printservice开发
一 简介 从Android4.4开始,系统加入了打印相关的API,可以通过系统打印服务实现打印.对于需要使用打印功能的APP可参考官方教程接入打印服务. 这不是本文的内容,本文介绍打印机厂商如何使自己 ...
- Android Native 代码NDK开发学习笔记
引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...
- Android——Cocosd2d-x手机游戏开发学习思路
手机 APP 应用如雨后春笋般冒了出来,而在众多的 APP 应用中,游戏占据了半壁江山.它丰富着人们的业余生活,增进了人们之间的沟通交流.也有许多开发的朋友对游戏开发情有独钟,他们不止是享受着有很多的 ...
最新文章
- Redis缓存穿透击穿雪崩
- mysql v8 漏洞_mysql'密码安全 - osc_v8gts6gd的个人空间 - OSCHINA - 中文开源技术交流社区...
- hdu1799 循环多少次?(组合递推公式的使用)
- 插入排序Insertion sort 2
- regardless what you do
- 缓存-分布式锁-Redisson-信号量测试
- vscode setting json_win10+letex+vscode+texlive+latex workshop+sumatrapdf
- Asp.net2.0 学习资源(转载)
- qq群发信息显示服务器检测到,关于如何突破QQ群发消息屏蔽或限制经验总结
- mysql中的内置函数
- Luogu4755 Beautiful Pair 最值分治、主席树
- [洛谷P4838]P哥破解密码
- PET,CT图像融合笔记
- Ubuntu 14.04 卸载搜狗拼音输入法及后续问题解决
- 在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升
- 寒衣节的由来和习俗,你知道吗?
- 五万字 | Hive知识体系保姆级教程
- 面朝大海,春暖花开,有wifi
- 淘宝API卖家/买家相关接口列表与说明
- 从管理看:华为如何应对全球化带来的挑战?
热门文章
- 阿里云视频点播PHP sdk上传文件
- GatewayFilter Factories
- H5微场景设计和应用
- 悲痛中提醒大家注意安全(深圳事件,有些恐怖),大家可要注意啊!
- arduino水温度传感器数字显示_创客出品_Arduino智能温度监测器
- OpenWrt软路由系统网络代理,观看Google-TV
- Unity【Multiplayer 多人在线】- Socket 通用客户端网络模块(一)、Connect 连接服务端
- 整机性能测试软件,整机性能测试—ZD 系列软件
- java使用ews-java-api发送邮件(包括附件和内联图片处理)
- 使用开源项目【Banner】实现轮播图效果(带小圆点)