2013-11-04 277 views
0

像往常一樣,我恐怕我在這個方面在我的頭上。安卓設置從gridview圖像壁紙

我已成功修改了一個教程,從對SD卡的文件夾得到一組圖片在GridView控件顯示

什麼,我試圖做的,是讓用戶選擇一個設置爲牆紙。

我的問題是,惠斯特我知道圖像的文件夾位置必須收到它出現我無法解決如何得到它,然後將其設置爲壁紙。

我已經包含了很多嘗試中的一小部分,但它引發了所有有點錯誤,主要是NullPointers,因爲我試圖從galleryitem.xml文件訪問ImageView。

public class MyWallpapers extends Activity { 


private boolean[] thumbnailsselection; 
private String[] arrPath; 
private ImageAdapter imageAdapter; 

ImageView Selected; 


ArrayList<String> f = new ArrayList<String>();// list of file paths 
File[] listFile; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.wallpaper_view_activity); 


    getFromSdcard(); 
    GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid); 
    imageAdapter = new ImageAdapter(); 
    imagegrid.setAdapter(imageAdapter); 


    final ImageView Selected = (ImageView) findViewById(R.id.thumbImage); 
     Selected.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 


       //need to get the position of the file and set it as wallpaper when the user clicks the image 

       Context context = this.getAbsolutePath(); 
       Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), 
         mImageIds[pos]); 
       context.setWallpaper(context); 

      } 
     }); 
    } 



public void getFromSdcard() 
{ 
    File file= new File(android.os.Environment.getExternalStorageDirectory(),"Wallpaper"); 

     if (file.isDirectory()) 
     { 
      listFile = file.listFiles(); 


      for (int i = 0; i < listFile.length; i++) 
      { 

       f.add(listFile[i].getAbsolutePath()); 

      } 
     } 
} 

public class ImageAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 

    public ImageAdapter() { 
     mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public int getCount() { 
     return f.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = mInflater.inflate(
        R.layout.galleryitem, null); 
      holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage); 

      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 


     Bitmap myBitmap = BitmapFactory.decodeFile(f.get(position)); 
     holder.imageview.setImageBitmap(myBitmap); 
     return convertView; 
    } 
} 
class ViewHolder { 
    ImageView imageview; 


} 
    } 

這是我在wallpaper_view_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<GridView 
    android:id="@+id/PhoneImageGrid" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_above="@+id/button1" 
    android:columnWidth="90dp" 
    android:gravity="center" 
    android:horizontalSpacing="10dp" 
    android:numColumns="auto_fit" 
    android:stretchMode="columnWidth" 
    android:verticalSpacing="10dp" /> 

最後的galleryitem.xml GridView控件

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ImageView 
    android:id="@+id/thumbImage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" /> 

任何幫助,這將是, 一個s非常感謝

回答

0
ImageLocation = listFile[position].getAbsolutePath(); 

          BitmapFactory.Options options = new BitmapFactory.Options(); 
          options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
          Bitmap bitmap = BitmapFactory.decodeFile(ImageLocation, options); 


          WallpaperManager myWallpaperManager 
          = WallpaperManager.getInstance(getApplicationContext()); 
          try { 
           myWallpaperManager.setBitmap(bitmap); 
           Toast.makeText(MyWallpapers.this, "Wallpaper Set", Toast.LENGTH_SHORT).show(); 
          } catch (IOException e) { 
           Toast.makeText(MyWallpapers.this, "Error", Toast.LENGTH_SHORT).show(); 
           e.printStackTrace(); 
          }