android 加载图片

package mydemo.mycom.demo2;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

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

public class ImagePrev extends ActionBarActivity implements View.OnClickListener {

    private ImageView iv;
    private Button btn_prev_image;
    private EditText et_image_path;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_prev);

        iv = (ImageView)findViewById(R.id.iv);
        btn_prev_image = (Button)findViewById(R.id.btn_prev_image);
        et_image_path = (EditText)findViewById(R.id.et_image_path);
        btn_prev_image.setOnClickListener(this);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_image_prev, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId())
        {
            case R.id.btn_prev_image:
                String path = et_image_path.getText().toString().trim();
                if(TextUtils.isEmpty(path))
                {
                    Toast.makeText(this,"图片路径不能",Toast.LENGTH_SHORT).show();
                    return;
                }
                try
                {
                    //浏览图片
                    URL url  = new URL(path);
                    HttpURLConnection conn = (HttpURLConnection)url.openConnection();

                    conn.setRequestMethod("GET");
                    conn.setConnectTimeout(5000);
                    int code = conn.getResponseCode();
                    if(code==200)
                    {
                        InputStream is = conn.getInputStream();
                        Bitmap bitmap = BitmapFactory.decodeStream(is);
                        iv.setImageBitmap(bitmap);
                    }
                    else
                    {
                        Toast.makeText(this,"图片浏览失败",Toast.LENGTH_SHORT).show();
                    }
                }catch (Exception e)
                {
                    Toast.makeText(this,"图片浏览失败",Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }
                break;
        }
    }
}

Activity

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="mydemo.mycom.demo2.ImagePrev">

    <ImageView
        android:layout_weight="1000"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/iv"/>
    <EditText
        android:text="http://192.168.1.1:91/Resource/TopicInfo/2015-05-23/130768288778069472.png"
        android:hint="图片路径"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et_image_path"/>

    <Button
        android:text="浏览"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn_prev_image"/>
</LinearLayout>
时间: 2024-10-24 15:59:06

android 加载图片的相关文章

BitmapFactory.Options解决Android加载图片内存溢出的问题

BitmapFactory.Options解决Android加载图片内存溢出的问题 1. 在Android软件开发过程中,图片处理是经常遇到的. 在将图片转换成Bitmap的时候,由于图片的大小不一样,当遇到很大的图片的时候会出现超出内存的问题,为了解决这个问题Android API提供了BitmapFactory.Options这个类. 2. 由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出.Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直

Android加载图片导致内存溢出(Out of Memory异常)

Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证):  方案一.读取图片时注意方法的调用,适当压缩  尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗

图片--Android加载图片导致内存溢出(Out of Memory异常)

Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证):  方案一.读取图片时注意方法的调用,适当压缩  尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗

android 加载图片oom若干方案小结

本文根据网上提供的一些技术方案加上自己实际开发中遇到的情况小结. 众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视手机而定).一般我们可以通过获取当前线程的可运行内存来判断,比如系统分给当前运行内存只有16M,而你的图片就有16M,这肯定会oom的. 相关知识介绍 1.颜色模型 常见的颜色模型有RGB.YUV.CMYK等,在大多数图像API中采用的都是RGB模型,Android也是如此:另外,在Android中还有包含透明度Alpha的颜色模型

专为Android加载图片Fresco:详细图解SimpleDraweeView加载图片基础

Fresco简单的使用—SimpleDraweeView 百学须先立志—学前须知: 在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该呈现正在加载时的图像,当图片 加载失败时应该呈现图片加载时的图像,当我们重新加载这张图片时,应该呈现重试时图像,直到这张图片加载完成.这些繁琐并且重复的如果得不到简化的话,那 将是一个开发人员的噩梦,现在好了,我们用 Facebook 出品的一个强大的图片加载组件 Fresco 几行代码就可以搞定以

[转]Android加载图片堆栈溢出

1.加载缩略图 /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return */ public static Bitmap loadResBitmap(String path, int scalSize) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; optio

Android加载图片你必须知道的技巧

学习如何处理和加载Bitmap,显示在UI上非常的重要.如果你不重视这块,Bitmap讲很快耗尽你的内存资源,最终导致oom内存溢出. 移动设备的内存资源很稀缺,很多时候每个应用只能分配到16MB的内存空间.部分机型可能分配的会更多,但是我们必须保证不超过最大内存的限制. Bitmaps本身就非常占用资源.比如一个Galaxy Nexus拍一张照片2592x1936分辨率.如果使用ARGB_8888(2.3版本以后默认值)加载bitmap的话,加载这张图将耗费将近19MB(2592*1936*4

解决Android加载图片时内存溢出的问题

尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存. 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()

Android 加载图片优化(二) LruCache DiskLruCache

LruCache(内存缓存) DiskLruCache(磁盘缓存) 1.创建diskLruCache 对象 private static DiskLruCache diskLruCache = DiskLruCache.open(cacheDir, appVersion, valueCount, DISK_CACHE_SIZE); cacheDir  数据缓存目录 appVersion 当前软件的版本号 一般为1 valueCount 一个key可以保存多少个文件 一般为1 DISK_CACHE