Android设置壁纸的大小

参考文章:http://blog.csdn.net/shenshizhong/article/details/74011549

设置壁纸

在Andorid中,设置壁纸大小一般通过默认的WallpaperManager:

//初始化WallpaperManager
private WallpaperManager mWpm;

public void initData(){
    // 初始化WallpaperManager
    mWpm = WallpaperManager.getInstance(this);
    // 是表示设置目前的像素是图片的像素,最好先获取手机屏幕像素大小,然后传递宽度和高度作为参数。
    mWpm.suggestDesiredDimensions(1280, 720);
}

/**
 * 设置墙纸
 */
private void wallpaper() {
    Tools.showWarningToast(getResources().getString(R.string.wallpaper_loading), this);
    mIb_wallpaper.setEnabled(false);
    //线程中设置壁纸
    new Thread() {
        @Override
        public void run() {
            super.run();
            try {
                ImageView iv = mAdapter.getCurrentView(); //这是图片
                iv.setDrawingCacheEnabled(true);
                mWpm.setBitmap(iv.getDrawingCache());//设置壁纸
                mHandler.sendEmptyMessage(SET_WALLPAPER_SUCCESS);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }.start();

}

设置壁纸的大小

但是以上代码设置的壁纸没有填充满整个屏幕,显示的是原图片的大小,那我们该怎么设置壁纸的大小呢???其实我们通过Bitmap改变图片大小即可:

/**
 * 设置为壁纸的图片应该填充满整个屏幕,所以需要先剪裁
 * @param bitMap
 * @return
 */
private Bitmap imageCropper(Bitmap bitMap){
    int width = bitMap.getWidth();
    int height = bitMap.getHeight();
    Logger.e(PhotoPlayerActivity.this,"imageCropper() width:"+width);
    Logger.e(PhotoPlayerActivity.this,"imageCropper() height:"+height);
    // 设置想要的大小
    int newWidth = 1280;
    int newHeight = 720;
    // 计算缩放比例
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // 取得想要缩放的matrix参数
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    // 得到新的图片
    bitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height, matrix,
            true);
    Logger.e(PhotoPlayerActivity.this,"imageCropper() newWidth"+bitMap.getWidth());
    Logger.e(PhotoPlayerActivity.this,"imageCropper() newHeight"+bitMap.getHeight());
    return bitMap;
}

那么完整的代码便是:

//初始化WallpaperManager
private WallpaperManager mWpm;

public void initData(){
    // 初始化WallpaperManager
    mWpm = WallpaperManager.getInstance(this);
    // 是表示设置目前的像素是图片的像素,最好先获取手机屏幕像素大小,然后传递宽度和高度作为参数。
    mWpm.suggestDesiredDimensions(1280, 720);
}

/**
 * 设置墙纸
 */
private void wallpaper() {
    Tools.showWarningToast(getResources().getString(R.string.wallpaper_loading), this);
    mIb_wallpaper.setEnabled(false);
    //线程中设置壁纸
    new Thread() {
        @Override
        public void run() {
            super.run();
            try {
                ImageView iv = mAdapter.getCurrentView(); //这是你图片,可用imageLoader转成imageView
                iv.setDrawingCacheEnabled(true);
                Bitmap bitMap = imageCropper(iv.getDrawingCache());
                mWpm.setBitmap(bitMap);//设置壁纸
                mHandler.sendEmptyMessage(SET_WALLPAPER_SUCCESS);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }.start();

}

/**
 * 设置为壁纸的图片应该填充满整个屏幕,所以需要先剪裁
 * @param bitMap
 * @return
 */
private Bitmap imageCropper(Bitmap bitMap){
    int width = bitMap.getWidth();
    int height = bitMap.getHeight();
    Logger.e(PhotoPlayerActivity.this,"imageCropper() width:"+width);
    Logger.e(PhotoPlayerActivity.this,"imageCropper() height:"+height);
    // 设置想要的大小
    int newWidth = 1280;
    int newHeight = 720;
    // 计算缩放比例
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;
    // 取得想要缩放的matrix参数
    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    // 得到新的图片
    bitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height, matrix,
            true);
    Logger.e(PhotoPlayerActivity.this,"imageCropper() newWidth"+bitMap.getWidth());
    Logger.e(PhotoPlayerActivity.this,"imageCropper() newHeight"+bitMap.getHeight());
    return bitMap;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值