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

问题描述 投票:0回答:1

大家好我正在创建一个壁纸应用程序,我从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();
                    }
java android firebase firebase-realtime-database
1个回答
1
投票

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

GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .into(yourImageView);
© www.soinside.com 2019 - 2024. All rights reserved.