2013-07-01 60 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);