如何在Android studio中动态更改drawable文件夹中的图像?

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

我在下面有这个片段:

            public void onReceive(Context context, Intent intent) {
                    try {
                        int random_int = (int)Math.floor(Math.random() * (max - min + 1) + min);
                        if(random_int == 0){
                            wallpaperManager.setResource(R.drawable.phonewallpaper1, WallpaperManager.FLAG_LOCK);
                        }else if(random_int == 1){
                            wallpaperManager.setResource(R.drawable.phonewallpaper2, WallpaperManager.FLAG_LOCK);
                        }else if(random_int == 2){
                            wallpaperManager.setResource(R.drawable.phonewallpaper3, WallpaperManager.FLAG_LOCK);
                        }else if(random_int == 3){
                            wallpaperManager.setResource(R.drawable.phonewallpaper4, WallpaperManager.FLAG_LOCK);
                        }

                        // set the wallpaper by calling the setResource function and
                        // passing the drawable file
                    } catch (IOException e) {
                        // here the errors can be logged instead of printStackTrace
                        e.printStackTrace();
                    }

此代码基本上是根据drawable文件夹中的静态图像(4张图像)随机设置屏幕锁壁纸。 如果我将 4 个新图像放入 Android 设备的文件夹中,例如在“/storage/emulated/0/downloads/contents/”下。

如何根据“/storage/emulated/0/downloads/contents/”下的图像动态更改可绘制文件夹中的图像?

以编程方式替换可绘制文件夹中的图像是否更容易,或者只是将代码指向文件夹“/storage/emulated/0/downloads/contents/”?

我在谷歌上搜索了如何执行此操作,但无法真正找到任何从设备文件夹中设置屏幕锁壁纸的内容。

谢谢你

android directory drawable wallpaper screen-lock
1个回答
0
投票
        File image1 = new File(Environment.getExternalStorageDirectory(), "/downloads/image1.jpg");
    File image2 = new File(Environment.getExternalStorageDirectory(), "/downloads/image2.jpg");
    final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext());
    Bitmap myBitmap1 =  BitmapFactory.decodeFile(image1.getAbsolutePath());
    Bitmap myBitmap2 =  BitmapFactory.decodeFile(image2.getAbsolutePath());
    @SuppressLint("ResourceType")
    // on below line initializing web view with id.
    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
                try {
                    int random_int = (int)Math.floor(Math.random() * (max - min + 1) + min);
                    if(random_int == 0){
                        wallpaperManager.setBitmap(myBitmap1,null, true, WallpaperManager.FLAG_LOCK);
                    }else if(random_int == 1){
                        wallpaperManager.setBitmap(myBitmap2,null, true, WallpaperManager.FLAG_LOCK);
                    }
© www.soinside.com 2019 - 2024. All rights reserved.