Android高级之xUtils框架(三)BitmapUtils

来源:互联网 发布:模拟退火 遗传算法结合 编辑:程序博客网 时间:2024/05/07 12:36

BitmapUtils本身不是单例的,但我们在用它时,必须以单例模式的方式使用,这是因为涉及到内存缓存的原因,因此我们给它定义一个工类,设计成单例的。初始化时,可以用传统的方式之外,还有一种方式,也可以说是一种思想,就是把在整个项目运行之前需初始化且只初始化一次的对象在Application中的onCreate()中。

工具类:

/** * 定义一个工具类,设计成单例模式 */public class BitmapHelper {    private static BitmapUtils utils;//   定义一个方法,在Application中调用它而初始化    public static void initUtils(Context context){//       实例化BitmapUtls        utils=new BitmapUtils(context,null,0.25f,20 << 20);//        设置默认大小        utils.configDefaultBitmapMaxSize(100, 100);//        设置下载失败时的图片        utils.configDefaultLoadFailedImage(R.mipmap.ic_launcher);//        下载中时的图片        utils.configDefaultLoadingImage(R.mipmap.ic_launcher);//        对图片设置形状时用到configfactory,一层套一层,需注意,BitmapFactoryxUtils包中的        BitmapDisplayConfig config = new BitmapDisplayConfig();        BitmapFactory factory = new BitmapFactory() {            @Override            public BitmapFactory cloneNew() {                return this;            }//            创建一个新的Bitmap,并回收原来的            @Override            public Bitmap createBitmap(Bitmap bitmap) {                int height = bitmap.getHeight();                int width = bitmap.getWidth();                Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);                Paint paint = new Paint();                paint.setShader(new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));                paint.setStyle(Paint.Style.FILL);                new Canvas(result).drawCircle(width / 2, height / 2, Math.min(width, height) / 2, paint);                bitmap.recycle();                return result;            }        };        config.setBitmapFactory(factory);        utils.configDefaultDisplayConfig(config);    }    public static BitmapUtils getUtils(){        return utils;    }}
/** * 定义一个Application,并初始化BitmapUtils */public class BaseApp extends Application {    @Override    public void onCreate() {        super.onCreate();        BitmapHelper.initUtils(this);    }}
这里需注意,在清单文件中给Application加上name:
android:name=".BaseApp"
接下来就是请求图片了,只有一句话而已:
public class MainActivity extends AppCompatActivity {    private ImageView imageView;    private String path="http://img001.21cnimg.com/photos/album/20151111/m600/00E973F202F65E0848B3E3875DF97FAB.jpeg";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageView=(ImageView)findViewById(R.id.imageView);//        请求网络图片进行下载        BitmapHelper.getUtils().display(imageView, path);        Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();    }}
最后,加上INTERNET权限。这样就好了,其实也是很简单的!效果如下:

0 0
原创粉丝点击