Android图片显示ICON——基础编

简介:

今天写了一编小的图片显示代码,是从ICON的图片的显示结果来说明如果从以后的过程中更加适合里面去。先让我们看一下:图:

让我们看一下类中是代码:

 


 
 
  1. package com.smart.widget; 
  2.  
  3. import android.content.Context; 
  4. import android.graphics.Bitmap; 
  5. import android.graphics.BitmapFactory; 
  6. import android.graphics.Canvas; 
  7. import android.graphics.Rect; 
  8. import android.util.AttributeSet; 
  9. import android.widget.TextView; 
  10.  
  11. public class IconText  extends TextView{ 
  12.  
  13. //  命名空间的值 
  14.     private final String namespace = "http://net.blogjava.mobile"
  15.     //  图像资源ID 
  16.     private int resourceId = 0
  17.     private Bitmap bitmap; 
  18.  
  19.     public IconText(Context context, AttributeSet attrs) 
  20.     { 
  21.         super(context, attrs); 
  22.         resourceId = attrs.getAttributeResourceValue(namespace, "iconSrc"0); 
  23.         if (resourceId > 0
  24.             bitmap = BitmapFactory.decodeResource(getResources(), resourceId); 
  25.     } 
  26.  
  27.     @Override 
  28.     protected void onDraw(Canvas canvas) 
  29.     { 
  30.         if (bitmap != null
  31.         { 
  32.              
  33.             //  从原图上截取图像的区域,在本例中为整个图像 
  34.             Rect src = new Rect(); 
  35.             //  将截取的图像复制到bitmap上的目标区域,在本例中与复制区域相同 
  36.             Rect target = new Rect(); 
  37.             src.left = 0
  38.             src.top = 0
  39.             src.right = bitmap.getWidth(); 
  40.             src.bottom = bitmap.getHeight(); 
  41.  
  42.             int textHeight = (int) getTextSize(); 
  43.             target.left = 0
  44.             //  计算图像复制到目录区域的纵坐标。由于TextView中文本内容并不是从最顶端开始绘制的,因此,需要重新计算绘制图像的纵坐标 
  45.             target.top = (int) ((getMeasuredHeight() - getTextSize()) / 2) + 1
  46.             target.bottom = target.top + textHeight; 
  47.             //  为了保证图像不变形,需要根据图像高度重新计算图像的宽度 
  48.             target.right = (int) (textHeight * (bitmap.getWidth() / (float) bitmap 
  49.                     .getHeight())); 
  50.             //  开始绘制图像 
  51.             canvas.drawBitmap(bitmap, src, target, getPaint()); 
  52.             //  将TextView中的文本向右移动一定的距离(在本例中移动了图像宽度加2个象素点的位置) 
  53.              
  54.             canvas.translate(target.right + 20); 
  55.         } 
  56.         super.onDraw(canvas); 
  57.  
  58.     } 
  59.      
  60.      
  61.  

main代码:
 


  
  
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     xmlns:mobile="http://www.baidu.com" 
  4.     android:orientation="vertical" 
  5.     android:layout_width="fill_parent" 
  6.     android:layout_height="fill_parent" 
  7.     > 
  8.      
  9.      
  10.     <com.smart.widget.IconText 
  11.     android:layout_width="fill_parent" 
  12.     android:layout_height="wrap_content" 
  13.     android:text="第一个笑脸" 
  14.     mobile:iconSrc="drawable/small" 
  15.     /> 
  16.      
  17.     <com.smart.widget.IconText 
  18.     android:layout_width="fill_parent" 
  19.     android:layout_height="wrap_content" 
  20.     android:text="第二个笑脸" 
  21.     android:textSize="24dp" 
  22.     mobile:iconSrc="drawable/small" 
  23.     /> 
  24.      
  25.     <com.smart.widget.IconText 
  26.     android:layout_width="fill_parent" 
  27.     android:layout_height="wrap_content" 
  28.     android:text="第三个笑脸" 
  29.     android:textSize="36dp" 
  30.     mobile:iconSrc="drawable/small" 
  31.     /> 
  32.      
  33.     <com.smart.widget.IconText 
  34.     android:layout_width="fill_parent" 
  35.     android:layout_height="wrap_content" 
  36.     android:text="第四个笑脸" 
  37.     android:textSize="48dp" 
  38.     mobile:iconSrc="drawable/small" 
  39.     /> 
  40.      
  41.     <com.smart.widget.IconText 
  42.     android:layout_width="fill_parent" 
  43.     android:layout_height="wrap_content" 
  44.     android:text="第五个笑脸" 
  45.     android:textSize="36dp" 
  46.     mobile:iconSrc="drawable/small" 
  47.     /> 
  48.      
  49.     <com.smart.widget.IconText 
  50.     android:layout_width="fill_parent" 
  51.     android:layout_height="wrap_content" 
  52.     android:text="第六个笑脸" 
  53.     android:textSize="24dp" 
  54.     mobile:iconSrc="drawable/small" 
  55.     /> 
  56.     <com.smart.widget.IconText 
  57.     android:layout_width="fill_parent" 
  58.     android:layout_height="wrap_content" 
  59.     android:text="第七个笑脸" 
  60.     mobile:iconSrc="drawable/small" 
  61.     /> 
  62.      
  63.      
  64.      
  65. </LinearLayout> 


 

 

本文转自 llb988 51CTO博客,原文链接:http://blog.51cto.com/llb988/497220,如需转载请自行联系原作者

相关文章
|
7月前
|
XML Java Android开发
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
113 0
|
7月前
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
847 0
|
3月前
|
存储 缓存 编解码
Android经典面试题之图片Bitmap怎么做优化
本文介绍了图片相关的内存优化方法,包括分辨率适配、图片压缩与缓存。文中详细讲解了如何根据不同分辨率放置图片资源,避免图片拉伸变形;并通过示例代码展示了使用`BitmapFactory.Options`进行图片压缩的具体步骤。此外,还介绍了Glide等第三方库如何利用LRU算法实现高效图片缓存。
68 20
Android经典面试题之图片Bitmap怎么做优化
|
7月前
|
Android开发
Android通过手势(多点)缩放和拖拽图片
Android通过手势(多点)缩放和拖拽图片
55 4
|
7月前
|
Java Android开发
android 下载图片的问题
android 下载图片的问题
47 3
|
4月前
|
数据处理 开发工具 数据安全/隐私保护
Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路
本文探讨了Android平台上推流模块中添加文字与PNG水印的技术演进。自2015年起,为了满足应急指挥及安防领域的需求,逐步发展出三代水印技术:第一代为静态文字与图像水印;第二代实现了动态更新水印内容的能力,例如实时位置与时间信息;至第三代,则优化了数据传输效率,直接使用Bitmap对象传递水印数据至JNI层,减少了内存拷贝次数。这些迭代不仅提升了用户体验和技术效率,也体现了开发者追求极致与不断创新的精神。
|
4月前
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
243 4
|
4月前
|
XML 前端开发 Android开发
Android经典实战之Kotlin中实现圆角图片和圆形图片
本文介绍两种实现圆角图像视图的方法。第一种是通过自定义Kotlin `AppCompatImageView`,重写`onDraw`方法使用`Canvas`和`Path`进行圆角剪裁。第二种利用Android Material库中的`ShapeableImageView`,简单配置即可实现圆角效果。两种方法均易于实现且提供动态调整圆角半径的功能。
75 0
|
6月前
|
JSON 编解码 Apache
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
64 1
|
6月前
|
Java Android开发
18. 【Android教程】图片控件 ImageView
18. 【Android教程】图片控件 ImageView
88 4