2013-07-01 59 views
0

我有困難,試圖設置壁紙圖像,以適應屏幕。縮略圖圖像很好,看起來不錯,但是當我選擇將圖像設置爲壁紙時,它只是一種大而不適合的屏幕?設置壁紙圖像,以適應屏幕

這裏是我的代碼,XML

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gridview1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:numColumns="auto_fit" 
android:verticalSpacing="10dp" 
android:horizontalSpacing="10dp" 
android:stretchMode="columnWidth" 
android:gravity="center"/> 

而且這裏的.java

GridView gridview = (GridView) findViewById(R.id.gridview1); 
gridview.setAdapter(new ImageAdapter(this)); 

gridview.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

     ImageAdapter i = (ImageAdapter)parent.getAdapter();     
     Bitmap mBitmap = BitmapFactory.decodeResource(getResources(),(int)i.getItemId(position)); 

     WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext ()); 

     try { 
      myWallpaperManager.setBitmap(mBitmap); 
      Toast.makeText(MainActivity.this, "Wallpaper set", Toast.LENGTH_SHORT).show(); 
     } catch (IOException e) { 
      Toast.makeText(MainActivity.this, "Error setting wallpaper", Toast.LENGTH_SHORT).show (); 
     } 
    } 
    }); 
} 

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 

public ImageAdapter(Context c) { 
    mContext = c; 
} 

public int getCount() { 
    return mThumbIds.length; 
} 

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

public long getItemId(int position) { 
    return mFullSizeIds[position]; 
} 

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 

    if (convertView == null) { 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(300, 250)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageResource(mThumbIds[position]); 

    return imageView; 
} 

private Integer[] mThumbIds = { 
     R.drawable.pic1t, 
     R.drawable.pic2t, 
     R.drawable.pic3t, 
     R.drawable.pic4t, 
     R.drawable.pic5t, 
     R.drawable.pic6t, 
     R.drawable.pic7t, 
     R.drawable.pic8t, 
     R.drawable.pic9t 
}; 

private Integer[] mFullSizeIds = { 
     R.drawable.pic1, 
     R.drawable.pic2, 
     R.drawable.pic3, 
     R.drawable.pic4, 
     R.drawable.pic5, 
     R.drawable.pic6, 
     R.drawable.pic7, 
     R.drawable.pic8, 
     R.drawable.pic9 
}; 
} 
} 

任何人都可以請幫助!我在這裏做錯了什麼?我的思想一片空白!

回答

0

你必須改變這樣在getView()方法:

public View getView(int position, View convertView, ViewGroup parent) { 
ImageView imageView; 

if (convertView == null) { 
    imageView = new ImageView(mContext); 
    imageView.setLayoutParams(new GridView.LayoutParams(300, 250)); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageView.setPadding(8, 8, 8, 8); 
} else { 
    imageView = (ImageView) convertView; 
} 

imageView.setImageResource(mThumbIds[position]); 

return imageView; 

}

+0

感謝大家好,但它不是縮略圖其壁紙本身。選擇圖像後,圖像在主屏幕上顯示不正確。 – Allrounder

0

,或者你可以試試這個

imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);