网络图片设置为手机背景

给手机上面的图片设置为背景

之前一直想做一个浏览汽车图片的app,并将自己喜欢的汽车图片设置成手机背景,因为一直在工作没有什么时间搞,现在自己写了一个mvp的小项目,虽然跟之前想到做汽车图片浏览app(DanShiApp)不一样,但是也有图片浏览的相关模块,所以就一起实现了设置手机背景的功能,废话多少先上代码


设置手机背景需要添加权限

 <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
 <uses-permission android:name="android.permission.SET_WALLPAPER"/>
复制代码

 try {
 WallpaperManager instance = WallpaperManager.getInstance(WallPicActivity.this);
int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getWidth();
int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight();
instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight);
instance.setBitmap(bitmap);
Toast.makeText(WallPicActivity.this,"壁纸设置成功",Toast.LENGTH_SHORT).show();
                 } catch (IOException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
                 }

这里的bitmap 时间网络请求的url 转化成的,可以用下面这个方法

/**
 * 根据图片的url路径获得Bitmap对象
 * @param url
 * @return
 */
private Bitmap returnBitmap(String url) {
    URL fileUrl = null;
    Bitmap bitmap = null;

    try {
        fileUrl = new URL(url);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

    try {
        HttpURLConnection conn = (HttpURLConnection) fileUrl
                .openConnection();
        conn.setDoInput(true);
        conn.connect();
        InputStream is = conn.getInputStream();
        bitmap = BitmapFactory.decodeStream(is);
        is.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return bitmap;

}

不过我用的是picasso 框架转化的

Bitmap bitmap = Picasso.with(context).load(bitmapUrl).get();

可能需要注意的几点,这些方法是要异步操作的,我用的是Rxjava操作的这里也贴上代码

/**
*把图片设置成手机壁纸
*/

    private void makeWallpaper() {

    Observable.create(new Observable.OnSubscribe<Bitmap>() {
        @Override
        public void call(Subscriber<? super Bitmap> subscriber) {

            Bitmap bitmap = null;
            try {
                 bitmap = Picasso.with(MeiZhiDetailActivity.this).load(bitmapUrl).get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            subscriber.onNext(bitmap);
            subscriber.onCompleted();

        }
    })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Bitmap>() {
                @Override
                public void onCompleted() {

  Toast.makeText(MeiZhiDetailActivity.this, "壁纸设置成功", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(Bitmap bitmap) {

                    try {
                        WallpaperManager instance = WallpaperManager.getInstance(MeiZhiDetailActivity.this);
                        int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getWidth();
                        int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight();
                        instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight);

                        instance.setBitmap(bitmap);

                    } catch (IOException e) {

                        e.printStackTrace();
                    }

                }
            });


}

好了基本的步骤大概就是这些,大家也把喜欢的图片设置成手机壁纸吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值