首页 > 解决方案 > 如何从字符串列表/网址设置为墙纸

问题描述

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

现在我坚持设置为墙纸,因为图像是 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();
                    }

标签: javaandroidfirebasefirebase-realtime-database

解决方案


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

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

推荐阅读