开源项目smartImageView

https://github.com/网址上可以下载很多开源项目源代码

smartImageView继承了安卓的ImageView,增强了它的功能,例如直接通过url显示图片(内部使用线程去GET图片)

使用方法

1、把smartImageView的源代码/src/com文件夹拷到自己的代码的src目录中

2、布局文件中添加一个smartImageView控件,注意要写全名(包含包名)

<--包名要写完整-->
    <com.itheima.smartimageview.SmartImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/iv" />

3、获取控件并调用image.setImageUrl(item.getImage())方法加载图片

smartImageView smart_img = (smartImageViewfindViewById(R.id.smart_img);
//直接通过url显示图片
//smart_img.setImagUrl("http://img0.bdstatic.com/img/image/imglog_detailHLT.gif");
//直接通过url显示图片,如果url图片得不到,则显示本地图片
smart_img.setImagUrl("http://img0.bdstatic.com/img/image/imglog_detailHLT.gif",R.drawable.mydefault);

代码示例

package com.itheima.custom.smartimgview;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * 自定义 smartimageview
 * 
 * @author Administrator
 *
 */
public class MySmartImageView extends ImageView {

	private Bitmap bitmap;
	//定义一个 handler
	private Handler handler = new Handler(){
		
		//重写handleMessage 方法 
		public void handleMessage(android.os.Message msg) {
		    int	msgg = msg.what;
			
		    switch (msgg) {
			case 0:
				MySmartImageView.this.setImageBitmap(bitmap);
				break;
				
			case 1:
				int errorResource = (Integer) msg.obj;
				MySmartImageView.this.setImageResource(errorResource);
			default:
				break;
			}
			
			
			
			
			
		};
	};
	
	
	public MySmartImageView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	
	// 设置 图片的url 
	public void setImagUrl(final String path){
		
		new Thread(){

		public void run() {
			
			try {
				URL url = new URL(path);
				//打开一个url连接 
				HttpURLConnection conn = (HttpURLConnection) url.openConnection();
				//设置conn 的参数 
				conn.setRequestMethod("GET");
				conn.setConnectTimeout(5000);
				//获取服务器返回的状态码
				int code = conn.getResponseCode();
				if (code == 200) { //200 请求服务器资源全部返回成功     //206 请求部分服务器资源返回成功   
					InputStream inputStream = conn.getInputStream(); //获取服务器返回的数据 
					//获取到bitmap 
					bitmap = BitmapFactory.decodeStream(inputStream);
					handler.sendEmptyMessage(0);  //发送一条消息    
				}

			} catch (Exception e) {
				
				   
				e.printStackTrace();
			}
			
			
		};}.start();
		
	}
	
	
	
	// 设置 图片的url 
		public void setImagUrl(final String path,final int errorResource){
			
			new Thread(){

			public void run() {
				
				try {
					URL url = new URL(path);
					//打开一个url连接 
					HttpURLConnection conn = (HttpURLConnection) url.openConnection();
					//设置conn 的参数 
					conn.setRequestMethod("GET");
					conn.setConnectTimeout(5000);
					//获取服务器返回的状态码
					int code = conn.getResponseCode();
					if (code == 200) { //200 请求服务器资源全部返回成功     //206 请求部分服务器资源返回成功   
						InputStream inputStream = conn.getInputStream(); //获取服务器返回的数据 
						//获取到bit map 
						
						bitmap = BitmapFactory.decodeStream(inputStream);
						
						handler.sendEmptyMessage(0);  //发送一条消息    

					}else {
						Message msg = Message.obtain();
						msg.obj = errorResource;
						msg.what = 1;
						handler.sendMessage(msg);
						
						
					}

				} catch (Exception e) {
					   
					
					e.printStackTrace();
				}
				
				
				
			};}.start();
			
		}
	
	
	

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Barry__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值