在Android中使用WallpaperManager设置壁纸 [英] Using WallpaperManager in Android to set wallpaper
本文介绍了在Android中使用WallpaperManager设置壁纸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面是我的codeS,我想用壁纸经理设置为墙纸。我使用通用图像装载机,但我不知道如何实现墙纸经理。我setWall()不工作,有点扑朔迷离。
进口android.graphics.Bitmap;
进口android.os.Bundle;
进口android.os.Parcelable;
进口android.support.v4.view.PagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.view.LayoutInflater;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.animation.Animation;
进口android.view.animation.AnimationUtils;
进口android.widget.ImageView;
进口android.widget.ProgressBar;
进口android.widget.Toast;
进口com.nostra13.universalimageloader.core.DisplayImageOptions;
进口com.nostra13.universalimageloader.core.assist.FailReason;
进口com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
进口com.nostra13.universalimageloader.core.assist.ImageScaleType;
公共类ImageActivity扩展BaseActivity {
私人DisplayImageOptions imageoptions;
私人ViewPager imagepager;
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.imagepager);
束束= getIntent()getExtras()。
的String [] imageUrls = bundle.getStringArray(Extra.IMAGES);
INT pagerPosition = bundle.getInt(Extra.IMAGE_POSITION,0);
imageoptions =新DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.noimage)
.cacheOnDisc()
.imageScaleType(ImageScaleType.EXACT)
。建立();
imagepager =(ViewPager)findViewById(R.id.imagepager);
imagepager.setAdapter(新ImagePagerAdapter(imageUrls));
imagepager.setCurrentItem(pagerPosition);
}
公共无效setWall(){
WallpaperManager myWallpaperManager
= WallpaperManager.getInstance(getApplicationContext());
尝试 {
myWallpaperManager.setResource(R.drawable.app_icon); //< - 我的应用程序只是把我的应用程序图标的图像作为背景,这不是我想要的。我想我的设置选择图片作为壁纸
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
}
@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
。getMenuInflater()膨胀(R.menu.main_menu,菜单);
返回true;
}
@覆盖
公共布尔onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.setWall:
setWall();
返回true;
默认:
返回false;
}
}
@覆盖
保护无效的onStop(){
imageLoader.stop();
super.onStop();
}
私有类ImagePagerAdapter扩展PagerAdapter {
私有String []的图像;
私人LayoutInflater充气;
ImagePagerAdapter(字符串[]的图像){
this.images =图像;
充气= getLayoutInflater();
}
@覆盖
公共无效destroyItem(View容器,INT位置,Object对象){
((ViewPager)容器).removeView((查看)对象);
}
@覆盖
公共无效finishUpdate(View容器){
}
@覆盖
公众诠释getCount将(){
返回images.length;
}
@覆盖
公共对象instantiateItem(查看视图,INT位置){
最后查看imageLayout = inflater.inflate(R.layout.item_pager_image,NULL);
最后的ImageView ImageView的=(ImageView的)imageLayout.findViewById(R.id.image);
最终进度微调=(进度)imageLayout.findViewById(R.id.loading);
imageLoader.displayImage(图片[位置],ImageView的,imageoptions,新ImageLoadingListener(){
公共无效onLoadingStarted(){
spinner.setVisibility(View.VISIBLE);
}
公共无效onLoadingFailed(FailReason failReason){
字符串消息= NULL;
开关(failReason){
案例IO_ERROR:
消息=输入/输出错误;
打破;
案例OUT_OF_MEMORY:
消息=内存不足错误;
打破;
案例未知:
消息=未知错误;
打破;
}
Toast.makeText(ImagePagerActivity.this,消息,Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
imageView.setImageResource(android.R.drawable.ic_delete);
}
公共无效onLoadingComplete(位图loadedImage){
spinner.setVisibility(View.GONE);
动画动画= AnimationUtils.loadAnimation(ImagePagerActivity.this,R.anim.fade_in);
imageView.setAnimation(动画);
anim.start();
}
公共无效onLoadingCancelled(){
// 没做什么
}
});
((ViewPager)视图).addView(imageLayout,0);
返回imageLayout;
}
@覆盖
公共布尔isViewFromObject(查看视图,Object对象){
返回view.equals(对象);
}
@覆盖
公共无效restoreState(Parcelable状态,类加载器加载器){
}
@覆盖
公共Parcelable saveState和(){
返回null;
}
@覆盖
公共无效startUpdate(View容器){
}
}
}
解决方案
而不是 myWallpaperManager.setResource(0)
你为什么不使用 myWallpapaerManager.setResource(R.drawable.yourimage)
看一看 Wallpapaer经理的例子。希望这有助于你不少。
Below are my codes, I want to use wallpaper manager to set as wallpaper. I'm using Universal Image Loader, but i dont know how implement wallpaper manager. My setWall() is not working, kinda confusing.
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
public class ImageActivity extends BaseActivity {
private DisplayImageOptions imageoptions;
private ViewPager imagepager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.imagepager);
Bundle bundle = getIntent().getExtras();
String[] imageUrls = bundle.getStringArray(Extra.IMAGES);
int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0);
imageoptions = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.noimage)
.cacheOnDisc()
.imageScaleType(ImageScaleType.EXACT)
.build();
imagepager= (ViewPager) findViewById(R.id.imagepager);
imagepager.setAdapter(new ImagePagerAdapter(imageUrls));
imagepager.setCurrentItem(pagerPosition);
}
public void setWall() {
WallpaperManager myWallpaperManager
= WallpaperManager.getInstance(getApplicationContext());
try {
myWallpaperManager.setResource(R.drawable.app_icon); //<--My app just set my app icon image as wallpaper, this is not I wanted. I wanted to set my selected image as wallpaper
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.setWall:
setWall();
return true;
default:
return false;
}
}
@Override
protected void onStop() {
imageLoader.stop();
super.onStop();
}
private class ImagePagerAdapter extends PagerAdapter {
private String[] images;
private LayoutInflater inflater;
ImagePagerAdapter(String[] images) {
this.images = images;
inflater = getLayoutInflater();
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
@Override
public void finishUpdate(View container) {
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object instantiateItem(View view, int position) {
final View imageLayout = inflater.inflate(R.layout.item_pager_image, null);
final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);
imageLoader.displayImage(images[position], imageView, imageoptions, new ImageLoadingListener() {
public void onLoadingStarted() {
spinner.setVisibility(View.VISIBLE);
}
public void onLoadingFailed(FailReason failReason) {
String message = null;
switch (failReason) {
case IO_ERROR:
message = "Input/Output error";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case UNKNOWN:
message = "Unknown error";
break;
}
Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
imageView.setImageResource(android.R.drawable.ic_delete);
}
public void onLoadingComplete(Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
Animation anim = AnimationUtils.loadAnimation(ImagePagerActivity.this, R.anim.fade_in);
imageView.setAnimation(anim);
anim.start();
}
public void onLoadingCancelled() {
// Do nothing
}
});
((ViewPager) view).addView(imageLayout, 0);
return imageLayout;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View container) {
}
}
}
解决方案
Instead of myWallpaperManager.setResource(0);
Why didn't you use the myWallpapaerManager.setResource(R.drawable.yourimage)
Have a look at Wallpapaer Manager example. Hope this helps you lot.
这篇关于在Android中使用WallpaperManager设置壁纸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文