kunyashaw博客主页 关注kunyashaw新博客 关于kunyashaw 转到底部

69、Android 布局中轻松实现图片的全屏、居中、平铺


复制代码
 1   public void paint() {
 2         if (item.laying_mode != 1)//平铺或者充满
 3         {
 4             new AsyncTask<Void, Void, Void>() {
 5                 @Override
 6                 protected Void doInBackground(Void... params) {
 7                     Looper.prepare();
 8                     try {
 9                         theBitmap = Glide.
10                                 with(ctxt).
11                                 load(item.src).
12                                 asBitmap().
13                                 into(fenbianlv[0], fenbianlv[1]).
14                                 get();
15                     } catch (final ExecutionException e) {
16                         Log.e(TAG, e.getMessage());
17                     } catch (final InterruptedException e) {
18                         Log.e(TAG, e.getMessage());
19                     }
20                     return null;
21                 }
22 
23                 @Override
24                 protected void onPostExecute(Void dummy) {
25                     if (null != theBitmap) {
26                         // The full bitmap should be available here
27 
28                         BitmapDrawable bd = new BitmapDrawable(Resources.getSystem(),theBitmap);
29                         if (item.laying_mode == 0)//充满(默认值,缩放到图片全部充满屏幕
30                         {
31                         } else if (item.laying_mode == 2)//平铺(从左上开始,一个一个的平铺)
32                         {
33                             bd.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
34                         }
35                         rl.setBackground(bd);
36                     }
37                 }
38             }.execute();
39         }
40         else//1:居中(图片按照原始大小,放到屏幕中间)
41         {
42             new AsyncTask<Void, Void, Void>() {
43                 @Override
44                 protected Void doInBackground(Void... params) {
45                     Looper.prepare();
46                     try {
47                         String imageUrl = item.src;
48                         theBitmap= BitmapFactory.decodeStream((InputStream) new URL(imageUrl).getContent());
49                     } catch (final Exception e) {
50                         Log.e(TAG, e.getMessage());
51                     }
52                     return null;
53                 }
54 
55                 @Override
56                 protected void onPostExecute(Void dummy) {
57                     if (null != theBitmap) {
58                         iv.setImageBitmap(theBitmap);
59                     }
60                 }
61             }.execute();
62         }
63     }
View Code
复制代码

 

 一下三种分别是充满、平铺、居中(按图片原始大小)

 

posted @   kunyashaw  阅读(2106)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2015-01-07 为什么有些人工作是痛苦的?
回到顶部
点击右上角即可分享
微信分享提示