Как установить обои из изображения

Я до сих пор не могу найти способ установить обои, которые изображение получает из ImageView. Кто-нибудь может показать мне, как установить обои для телефона из Android ImageView?

Вот мой код:

Макет изображения:

<ImageView
    android:contentDescription="My Wallpaper"
    android:id="@+id/full_image_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:saveEnabled="true"
    />

Активность в просмотре изображений

Обратите внимание, что изображение, показанное в FullImageActivity, получается из изображения GridView после того, как пользователь щелкнул элемент.

public class FullImageActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.full_image);

    // get intent data
    Intent i = getIntent();

    // Selected image id
    int position = i.getExtras().getInt("id");
    ImageAdapter imageAdapter = new ImageAdapter(this);

    ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
    imageView.setImageResource(imageAdapter.mThumbIds[position]);
}
}

Я хочу установить обои из изображения в указанном выше действии после того, как пользователь коснется экрана, я выскочу, чтобы спросить пользователя, хотят ли они установить его в качестве обоев или нет.


person SopheakVirak    schedule 11.06.2012    source источник
comment
Да, я думаю, кода @Abdul достаточно, чтобы установить ваше изображение в качестве обоев   -  person Praveenkumar    schedule 11.06.2012
comment
дорогой SpK, я добавил, но это не сработало :(   -  person SopheakVirak    schedule 11.06.2012
comment
Попробуйте мой ответ. С вашими потребностями   -  person Praveenkumar    schedule 11.06.2012


Ответы (2)


Я разместил свой код, который я использую в своем приложении. Я также беру изображение из GridView и, когда выбирается любое из изображений. Это будет установлено в качестве обоев.

Но мой код кажется другим. Я никогда не использовал ImageView

MainActivity.this

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    GridView gridview = (GridView) findViewById(R.id.gridview);
    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_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);

        return imageView;
    }

    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.wallpaper1t, 
            R.drawable.wallpaper2t, 
            R.drawable.wallpaper3t, 
            R.drawable.wallpaper4t, 
            R.drawable.wallpaper5t, 
            R.drawable.wallpaper6t, 
            R.drawable.wallpaper7t, 
            R.drawable.wallpaper8t
    };

    private Integer[] mFullSizeIds = {
            R.drawable.wallpaper1, 
            R.drawable.wallpaper2, 
            R.drawable.wallpaper3, 
            R.drawable.wallpaper4, 
            R.drawable.wallpaper5, 
            R.drawable.wallpaper6, 
            R.drawable.wallpaper7, 
            R.drawable.wallpaper8
    };
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    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"/>

Может быть, это может быть помогает вам многое.

person Praveenkumar    schedule 11.06.2012

Вам нужно создать растровое изображение, а затем установить его в качестве обоев

            Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), IMAGE_ID);
            WallpaperManager myWallpaperManager = WallpaperManager
                    .getInstance(getApplicationContext());

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

Где IMAGE_ID - это идентификатор ресурса вашего рисунка, например. R.drawable.imagename

person Md Abdul Gafur    schedule 11.06.2012
comment
Итак, я конвертирую так: Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.id.full_image_view); Дай мне попробовать - person SopheakVirak; 11.06.2012
comment
дорогой абдул, я добавил, но это не сработало. то я использую этот тоже не работает. Растровое изображение mBitmap = BitmapFactory.decodeResource(getResources(),imageAdapter.mThumbIds[position]); - person SopheakVirak; 11.06.2012
comment
Дорогой Абдул, я уже добился успеха .. спасибо за ваш код. он мне очень помогает :) - person SopheakVirak; 11.06.2012
comment
@SopheakVirak, что ты поставил вместо imageID, мне это нужно ?? - person A.J; 30.12.2012
comment
Jouni, вы хотите установить обои из папки с возможностью рисования, а затем R.drawable.imagename. это идентификатор изображения - person Md Abdul Gafur; 30.12.2012