设置壁纸图像以适应屏幕

时间:2013-07-01 11:02:18

标签: android

我在设置壁纸图像以适应屏幕时遇到困难。缩略图图像很好,看起来不错,但是当我选择将图像设置为壁纸时,它只是大而不适合屏幕的方式吗?

这是我的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
 };
 }
 }

任何人都可以帮忙!我在这做错了什么?我的思绪一片空白!

2 个答案:

答案 0 :(得分: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;

}

答案 1 :(得分:0)

或者你可以试试这个

imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
相关问题