ImageView学习

Posted 森林森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ImageView学习相关的知识,希望对你有一定的参考价值。

 

package liu.roundimagedemo.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
import android.util.AttributeSet;
import android.widget.ImageView;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by 刘楠 on 2016/8/31 0031.22:14
 */
public class NetImageView extends ImageView {

    Bitmap mBitmap;

    /**
     * 是否为圆形
     */
    private boolean isRound = false;

    public void setRound(boolean round) {
        isRound = round;
    }

    Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            //super.handleMessage(msg);
           if(!isRound){
               setImageBitmap(mBitmap);
               return;
           }

            Drawable drawable =createRoundBitmap(mBitmap);


            setImageDrawable(drawable);

        }
    };

    /**
     * 建立圆形图片
     * @param src
     * @return
     */
    private Drawable createRoundBitmap(Bitmap src) {

        Bitmap dst;

        if(src.getWidth()>src.getHeight()){
            dst = Bitmap.createBitmap(src,src.getWidth()/2-src.getHeight()/2,0,src.getHeight(),src.getHeight());
        }else {
            dst = Bitmap.createBitmap(src,0,src.getHeight()/2-src.getWidth()/2,src.getWidth(),src.getWidth());
        }


        RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(),dst);

        roundedBitmapDrawable.setAntiAlias(true);

        roundedBitmapDrawable.setCornerRadius(dst.getWidth()/2);


        return roundedBitmapDrawable;
    }

    public NetImageView(Context context) {
        super(context);
    }

    public NetImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    /**
     * 设置本地文件的图片
     * @param url
     */
    public void setLocalImage(String url){

        FileInputStream fis =null;
        try {
            fis  = new FileInputStream(url);

            mBitmap = BitmapFactory.decodeStream(fis);

            mHandler.sendEmptyMessage(0x1324);
            //setImageBitmap(decodeStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if(fis!=null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


    /**
     * 设置资源文件
     * @param resId
     */
    public void setResourceImage(int resId){


       mBitmap = BitmapFactory.decodeResource(getResources(), resId);
        mHandler.sendEmptyMessage(0x133);
       // setImageBitmap(bitmap);
    }


    public void setUrlImage(final String url){
       new Thread(){
           @Override
           public void run() {
               try {
                   URL uri = new URL(url);

                   HttpURLConnection conn = (HttpURLConnection) uri.openConnection();


                  // conn.setConnectTimeout(100);
                  // conn.setDoInput(true);

                  // conn.setReadTimeout(100);
                   int responseCode = conn.getResponseCode();

                   if(responseCode==200){
                       InputStream is = conn.getInputStream();

                       mBitmap = BitmapFactory.decodeStream(is);
                       mHandler.sendEmptyMessage(0x343);
                       is.close();
                   }


               } catch (MalformedURLException e) {
                   e.printStackTrace();
               } catch (IOException e) {
                   e.printStackTrace();
               }finally {

               }
           }
       }.start();
    }
}

 

以上是关于ImageView学习的主要内容,如果未能解决你的问题,请参考以下文章

FragmentNavigator 共享过渡不起作用

从 fragmentActivity 刷新片段 UI

片段中的 findViewById

我无法使用 RegisterActivityForResult 发送请求代码

片段中的Firebase数据不是持久的,会重新下载

如何从片段适配器启动活动