2011-10-12 100 views
0

我正在构建一个简单的壁纸应用程序,用户可以通过浏览图像选择并轻松将其设置为新的背景。Android - 在imageview中将当前图像设置为系统壁纸

我将我的drawables/images存储在一个数组中,我不能真正包裹我的头,以便如何以很好的方式引用imageview/array中的当前图像。

如何更改“R.id.bSet”(在底部)以自动从我正在查看的数组中选择图像并将其设置为壁纸?

package com.marcus.background; 

import java.io.IOException; 

import android.app.Activity; 
import android.app.WallpaperManager; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 

public class GalleryView extends Activity implements OnClickListener { 

    int pos = 0; 
    int amount = 10; 
    int max = amount - 1; 
    int min = 0; 
    Button prev, next, set; 
    ImageView image; 
    Bitmap bitmap; 
    final int[] imgs = new int[] { R.drawable.i1, R.drawable.i2, R.drawable.i3, 
      R.drawable.i4, R.drawable.i5, R.drawable.i6, R.drawable.i7, 
      R.drawable.i8, R.drawable.i9, R.drawable.i10, }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     image = (ImageView) findViewById(R.id.iView); 
     prev = (Button) findViewById(R.id.bPrev); 
     next = (Button) findViewById(R.id.bNext); 
     set = (Button) findViewById(R.id.bSet); 
     image.setImageResource(R.drawable.i1); 
     prev.setOnClickListener(this); 
     next.setOnClickListener(this); 
     set.setOnClickListener(this); 

    } 

    public void onClick(View v) { 

     switch (v.getId()) { 
     case R.id.bPrev: 
      if (pos > min) { 
       pos--; 
       image.setImageResource(imgs[pos]); 
       ; 
      } else { 
      } 
      break; 
     case R.id.bNext: 
      if (pos < max) { 
       pos++; 
       image.setImageResource(imgs[pos]); 
       ; 
      } else { 
      } 
      break; 
     case R.id.bSet: 

      // MAGIC GOES HERE ;) 

      bitmap = BitmapFactory.decodeResource(getResources(), 
        R.drawable.i1);   
      try { 
       getApplicationContext().setWallpaper(bitmap); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      // --------------- // 

      break; 
     } 

    } 
} 

回答

1
// instead of this: 
bitmap = BitmapFactory.decodeResource(getResources(), 
        R.drawable.i1); 
// try this:  
bitmap = BitmapFactory.decodeResource(getResources(), 
        imgs[pos]); 
+0

工程就像一个魅力,非常感谢:)。不知道我是如何错过它虽然x) – anderssonma

+0

壁纸可以设置而不裁剪? –