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
 };
 }
 }

任何人都可以请帮助!我在这里做错了什么?我的脑子里一片空白!

4

2 回答 2

0

或者你可以试试这个

imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
于 2013-07-01T11:18:13.883 回答
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;

}

于 2013-07-01T11:13:10.457 回答