首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像下载机/壁纸设置器

图像下载机/壁纸设置器
EN

Code Review用户
提问于 2013-02-12 18:07:01
回答 1查看 192关注 0票数 6

我正在制作一个图像下载应用程序,将图像设置为设备壁纸。为此,我用了一门课:

ImageDownloader.java

这个类有一个函数,它接受一个URL和一个ImageView。它使用在ImageView中定义的AsyncTask类下载并分配在URL中找到的图像。

我设法实现了它的预期,并希望扩大它的用途,以帮助我设置设备墙纸。事实证明,这非常复杂,但我在MainActivity.java中使用了以下代码:

代码语言:javascript
复制
public class MainActivity extends Activity {
private final ImageDownloader mDownload = new ImageDownloader();
public static Bitmap bima=null;
public static WallpaperManager wm;

在onCreate中:

代码语言:javascript
复制
 wm = WallpaperManager.getInstance(getApplicationContext());
    mDownload.download(url,imageView);

在MainActivity.Java中定义的方法:

代码语言:javascript
复制
public static void setbima(Bitmap bimu) {

    try {wm.setBitmap(bimu);} catch (Exception e) {}
}

然后,我在ImageDownloader类‘AsyncTask's onPostExecute中使用了如下函数:

代码语言:javascript
复制
MainActivity.setbima(bitmap);

使用由AsyncTask类传递给那里的位图。

对于WallpaperManager对象,我想使用该位图,因为它的函数.setBitmap()接受位图,并将系统壁纸放到位图上。

我只是想知道我实现这个目标的方式是最佳的,还是有更简单的方法来实现这一点?这似乎是一个非常遥不可及的方式,如果我是一个初学者程序员,我不会感到惊讶。

EN

回答 1

Code Review用户

发布于 2014-02-26 18:18:27

您现有的系统是有效的,因为它将基于网络的工作卸载到AsyncTask上,回调更新墙纸。

你没有给出你的ImageLoader AsyncTask的细节,但你可以把它们放在那里整理一些东西.它看起来就像:

代码语言:javascript
复制
public ImageLoader extends AsyncTask<String, Void, BitMap> {

    private final Context context;

    ImageLoader(Context context) {
        this.context = context;
    }

    public BitMap doInBackground(String urlpath) {
        // set the bitmap... do the work.
        return bitmap;
    }

    public void PostExecute(BitMap result) {
        try {
            WallpaperManager.getInstance(context).setBitmap(result);
        } catch (....) {
            ....
        }
    }

}

有了上面的任务,在onCreate of MainActivity中就很简单了:

代码语言:javascript
复制
new ImageDownloader(getApplicationContext()).execute(url);

这就是让它变得整洁的方法..。

票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/21635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档