【问题标题】:How to add a set as wallpaper button如何添加一组壁纸按钮
【发布时间】:2017-02-15 18:59:37
【问题描述】:

大家好,我正在创建一个在线壁纸应用程序。用户可以在线访问壁纸。我想添加两个按钮,第一个设置为壁纸,第二个设置为下载按钮。所以如果有人帮助我,我将不胜感激谢谢。

公共类 GalleryDetailActivity 扩展 ActionBarActivity {

public static final String EXTRA_IMAGE = "extra_image";


private ImageView mImageView;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gallery_detail);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    mImageView = (ImageView) findViewById(R.id.image);

    if (getIntent() != null && getIntent().getExtras() != null) {
        if (getIntent().getExtras().containsKey(EXTRA_IMAGE)) {
            Picasso.with(this).load(getIntent().getExtras().getString(EXTRA_IMAGE)).into(mImageView);
        }

    }

【问题讨论】:

  • 你能告诉我们你到目前为止的尝试吗?
  • 我使用 Picasso 和 json 为服务器下载图像

标签: wallpaper


【解决方案1】:

首先,您应该确保您有权进行此类操作。添加到您的清单中:

 <uses-permission android:name="android.permission.SET_WALLPAPER"/>

要下载托管在某个站点中的图像,您可以使用“doInBackground Thread”,如下所示:

How to download and save an image in Android

设置壁纸的按钮由以下代码创建:

Button setWallpaper = (Button)findViewById(R.id.YOUR_BUTTON);
ImageView imagePreview = (ImageView)findViewById(R.id.YOUR_PREVIEW);
imagePreview.setImageResource(YOUR_IMAGE_RESOURCE);

setWallpaper.setOnClickListener(new Button.OnClickListener(){
        @Override
        public void onClick(View arg0) {
            WallpaperManager myWallpaperManager 
            = WallpaperManager.getInstance(getApplicationContext());
            try {
                myWallpaperManager.setResource(YOUR_IMAGE_RESOURCE);
            } catch (IOException e) {
                e.printStackTrace();
            }
}});

YOUR_IMAGE 可以是本地资源,例如:

R.drawable.myImageFile

答案中的链接有几种方法可以下载您的在线图像。请检查它并尝试先使用本地图像设置您的壁纸。

File f = new File(Environment.getExternalStorageDirectory(), "yourfile.jpg");
String path = f.getAbsolutePath();
File jpg = new File(path);

if(jpg.exists()) {
    Bitmap bmp = BitmapFactory.decodeFile(path);
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
    WallpaperManager m=WallpaperManager.getInstance(this);

    try {
        m.setBitmap(bmp);
    } catch (IOException e) {
        e.printStackTrace();
    }
} 

【讨论】:

  • 我将在 image_resource 中放入什么我的来源在线
  • 需要更多线索.. 我正在使用 Picasso 和 json 在后台下载图片,所以我的图片来源是什么,谢谢
  • 请尝试使用本地文件。请参阅编辑答案以了解如何执行此操作。本地文件运行良好后,单击建议的链接并选择最适合您问题的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多