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 に答える