Voici mes codes, je veux utiliser le gestionnaire de fond d'écran pour définir comme fond d'écran. J'utilise Universal Image Loader, mais je ne sais pas comment mettre en œuvre le gestionnaire de fond d'écran. Mon setWall() ne fonctionne pas, un peu confus.Utilisation de WallpaperManager dans Android pour mettre en fond d'écran
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) {
}
}
}
Ma question pour vous est, qu'est-ce que vous * attendez * 'setWall()' faire? Vous lui donnez 0 comme valeur de ressource, pas un identifiant de ressource réel. Vous devez également fournir des informations sur ce que vous entendez par "ne pas travailler" - est-ce que ça plante? Obtenez-vous un résultat inattendu? S'il plante, regardez le LogCat et voyez les détails de l'exception. Si vous ne comprenez toujours pas, modifiez le journal de LogCat dans votre question. – kcoppock
J'ai modifié mes codes et voici mon logcat. –
Oui, c'est quoi 'R.id.imagepager' Ce n'est pas une solution. Faites juste cela avec n'importe quel 'R.drawable.someimageresource' Pour cela, tapez simplement dans votre espace de travail comme' R.drawable.' et après l'utilisation 'Ctrl + spacebar' il affichera vos images. Sinon, essayez l'icône de lancement de l'application avec 'R.drawable.ic_launcher' ou' R.drawable.icon' Cela dépend de votre SDK. Ou essayez simplement ce 'R.drawable.noimage' – Praveenkumar