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

时间:2018-08-08 14:27:00

标签: java android firebase firebase-realtime-database

大家好,我正在创建一个Wallpapers应用程序,在该应用程序中,我从Firebase数据库中提取了所有String格式的图像。

现在我被困在“设置为墙纸”上,因为图像采用Url格式,并且wallpaperManager.setResource(int)仅支持int格式。

我也曾尝试将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();
                    }

1 个答案:

答案 0 :(得分:1)

我想到的最简单的方法是在Android上使用Glide,在其中您可以将load()传递给url方法,该方法应为String类型。如果您有Url个对象的列表,则只需获取该对象的String表示形式并使用以下代码行即可:

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