Как установить обои из imageview
Я до сих пор не могу найти способ установить обои, которые изображение получает из ImageView. Кто-нибудь может показать мне способ установки обоев телефона из Android ImageView?
Вот мой код:
Макет 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]);
}
}
Я хочу установить обои с изображения в приведенном выше действии после того, как пользователь коснулся экрана, я выскакиваю, чтобы спросить пользователя, хотят ли они установить его как обои или нет.
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"/>
Может быть, это может помочь вам много.
Вам нужно создать растровое изображение, а затем установить его в качестве обоев
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