如何从字符串列表/ URL设置为墙纸

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从字符串列表/ URL设置为墙纸相关的知识,希望对你有一定的参考价值。

大家好我正在创建一个壁纸应用程序,我从Firebase数据库中获取所有图像的字符串格式。

现在我停留在Set As Wallpaper上,因为图像是Url格式,而wallpaperManager.setResource(int)只支持int formate。

我也尝试将Url转换为Bitmap,但它也不适用于我。

fabSetWallpaper.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String urldisplay = list.get(position).getImageURL();
                    Bitmap bmp = null;

                    try {
                        URL ulrn = new URL(urldisplay);
                        HttpURLConnection con = (HttpURLConnection) ulrn
                                .openConnection();
                        InputStream is = con.getInputStream();
                        bmp = BitmapFactory.decodeStream(is);

                        int widthPx = getWindowManager().getDefaultDisplay()
                                .getWidth();
                        int heightPx = getWindowManager().getDefaultDisplay()
                                .getHeight();
                        bmp = Bitmap.createScaledBitmap(bmp, widthPx, heightPx,
                                true);

                    } catch (Exception ex) {

                    }

                    WallpaperManager myWallpaperManager = WallpaperManager
                            .getInstance(getApplicationContext());
                    try {
                        myWallpaperManager
                                .setBitmap(bmp);
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    Toast.makeText(SecondTest2Activity.this, "Wallpaper Successfully Set On Screen ", Toast.LENGTH_LONG).show();
                }
            });

我已经尝试了上面的代码,但没有工作....可能这个问题将是一个人的副本,但我已经在网上搜索了很多,但没有找到任何解决方案

我找到了解决方案

String url = list.get(position).getImageURL();
                    ImageView img=new ImageView(SecondTest2Activity.this);
                    Picasso.get().load(url).into(img);
                    Bitmap bitmapImg = ((BitmapDrawable) img.getDrawable()).getBitmap();

                    WallpaperManager myWallpaperManager = WallpaperManager
                            .getInstance(getApplicationContext());
                    try {
                        myWallpaperManager
                                .setBitmap(bitmapImg);
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
答案

我能想到的最简单的方法是使用Glide for android,你可以将load()方法传递给url,它应该是String类型。如果您有一个Url对象列表,那么只需获取该对象的String表示并使用以下代码行:

GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .into(yourImageView);

以上是关于如何从字符串列表/ URL设置为墙纸的主要内容,如果未能解决你的问题,请参考以下文章

如何在离子应用程序中将图像设置为墙纸?

android如何通过代码设置锁屏壁纸

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

Android - 为列表视图填充适配器的异步任务

如何将列表视图中的数据从一个片段发送到另一个片段

如何从片段内的列表视图打开链接网址?