Android图片显示ICON——基础编

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

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

package com.smart.widget;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class IconText  extends TextView{

//  命名空间的值
	private final String namespace = "http://net.blogjava.mobile";
	//  图像资源ID
	private int resourceId = 0;
	private Bitmap bitmap;

	public IconText(Context context, AttributeSet attrs)
	{
		super(context, attrs);
		resourceId = attrs.getAttributeResourceValue(namespace, "iconSrc", 0);
		if (resourceId > 0)
			bitmap = BitmapFactory.decodeResource(getResources(), resourceId);
	}

	@Override
	protected void onDraw(Canvas canvas)
	{
		if (bitmap != null)
		{
			
			//  从原图上截取图像的区域,在本例中为整个图像
			Rect src = new Rect();
			//  将截取的图像复制到bitmap上的目标区域,在本例中与复制区域相同
			Rect target = new Rect();
			src.left = 0;
			src.top = 0;
			src.right = bitmap.getWidth();
			src.bottom = bitmap.getHeight();

			int textHeight = (int) getTextSize();
			target.left = 0;
			//  计算图像复制到目录区域的纵坐标。由于TextView中文本内容并不是从最顶端开始绘制的,因此,需要重新计算绘制图像的纵坐标
			target.top = (int) ((getMeasuredHeight() - getTextSize()) / 2) + 1;
			target.bottom = target.top + textHeight;
			//  为了保证图像不变形,需要根据图像高度重新计算图像的宽度
			target.right = (int) (textHeight * (bitmap.getWidth() / (float) bitmap
					.getHeight()));
			//  开始绘制图像
			canvas.drawBitmap(bitmap, src, target, getPaint());
			//  将TextView中的文本向右移动一定的距离(在本例中移动了图像宽度加2个象素点的位置)
			
			canvas.translate(target.right + 2, 0);
		}
		super.onDraw(canvas);

	}
	
	

}

main代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mobile="http://www.baidu.com"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
    
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第一个笑脸"
    mobile:iconSrc="drawable/small"
    />
    
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第二个笑脸"
    android:textSize="24dp"
    mobile:iconSrc="drawable/small"
    />
    
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第三个笑脸"
    android:textSize="36dp"
    mobile:iconSrc="drawable/small"
    />
    
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第四个笑脸"
    android:textSize="48dp"
    mobile:iconSrc="drawable/small"
    />
    
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第五个笑脸"
    android:textSize="36dp"
    mobile:iconSrc="drawable/small"
    />
    
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第六个笑脸"
    android:textSize="24dp"
    mobile:iconSrc="drawable/small"
    />
    <com.smart.widget.IconText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="第七个笑脸"
    mobile:iconSrc="drawable/small"
    />
    
    
    
</LinearLayout>
 

posted on 2011-02-21 11:12  llb988  阅读(1646)  评论(0编辑  收藏  举报

导航