Android中显示网络图片实现代码

 更新时间:2016年9月20日 20:00  点击:1715
本文章来给各位朋友介绍Android中显示网络图片实现代码有需要的朋友可参考参考。

在android当中显示一张网络图片的时候,其实是比较麻烦的。首先得把这个网络图片转换成java的imputstream流,然后再把这个留转换成一个bitMap.
bitMap是可以作为参数传给imageView的。

在下边的returnBitMap函数是最核心的,也是大家可以重用的,它负责把一个url的网络图片变成一个本地的BitMap

 代码如下 复制代码

    package com.jinyan.image; 
   
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.net.HttpURLConnection; 
    import java.net.MalformedURLException; 
   import java.net.URL; 
    
   import android.app.Activity; 
   import android.graphics.Bitmap; 
   import android.graphics.BitmapFactory; 
   import android.os.Bundle; 
   import android.util.Log; 
  import android.view.View; 
   import android.view.View.OnClickListener; 
   import android.widget.Button; 
   import android.widget.ImageView; 
   
  public class ActivityMain extends Activity { 
  /** Called when the activity is first created. */ 
   
  String imageUrl = "http://i.pbase.com/o6/92/229792/1/80199697.uAs58yHk.50pxCross_of_the_Knights_Templar_svg.png"; 
  Bitmap bmImg; 
  ImageView imView; 
   
  Button button1; 
   
   @Override 
   public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
   setContentView(R.layout.main); 
   imView = (ImageView) findViewById(R.id.imview); 
imView.setImageBitmap(returnBitMap(imageUrl)); 



 
public Bitmap returnBitMap(String url) { 
URL myFileUrl = null; 
Bitmap bitmap = null; 
try { 
myFileUrl = new URL(url); 
} catch (MalformedURLException e) { 
e.printStackTrace(); 

try { 
HttpURLConnection conn = (HttpURLConnection) myFileUrl 
  .openConnection(); 
conn.setDoInput(true); 
conn.connect(); 
InputStream is = conn.getInputStream(); 
bitmap = BitmapFactory.decodeStream(is); 
is.close(); 
} catch (IOException e) { 
  e.printStackTrace(); 
  } 
  return bitmap; 

 

 

xml文件

 代码如下 复制代码

   xml version="1.0" encoding="utf-8"?> 
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
   android:orientation="vertical" android:layout_width="fill_parent" 
  android:layout_height="fill_parent"> 
   <ImageView android:id="@+id/imview" android:layout_width="wrap_content" 
   android:layout_height="wrap_content" android:layout_gravity="center" /> 
    LinearLayout> 


注意,想要让你的程序可以访问网络,你必须在menifest文件里边增加:

 代码如下 复制代码

    <uses-permission android:name="android.permission.INTERNET" /> 

小编来给大家介绍在android中SharedPreferences进行数据存储实现程序代码,有需要了解的朋友可参考,SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成

它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最 终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。


这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和 J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面,那么这些设置最后就可以 通过Preferences来保存,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。当然,如果你愿意保存其他的东西,也没有什么限制。只 是在性能上不知道会有什么问题。

实现SharedPreferences存储的步骤如下:

一、根据Context获取SharedPreferences对象

二、利用edit()方法获取Editor对象。

三、通过Editor对象存储key-value键值对数据。

四、通过commit()方法提交数据。


具体代码的书写流程为:

 A、存放数据信息

1、打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences

 代码如下 复制代码

SharedPreferences settings = getSharedPreferences(“setting”, 0);

2、让setting处于编辑状态

 代码如下 复制代码

SharedPreferences.Editor editor = settings.edit();

3、存放数据

 代码如下 复制代码

editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);

4、完成提交

 代码如下 复制代码

editor.commit();

B、读取数据信息

1、获取Preferences

 代码如下 复制代码

SharedPreferences settings = getSharedPreferences(“setting”, 0);

2、取出数据

 代码如下 复制代码

String name = settings.getString(“name”,”默认值”);
String url = setting.getString(“URL”,”default”);

以上就是Android中SharedPreferences的使用方法,其中创建的Preferences文件存放位置可以在Eclipse中查看:

 代码如下 复制代码

DDMS->File Explorer /<package name>/shared_prefs/setting.xml

 代码如下 复制代码

public class MainActivity extends Activity {
     @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //获取SharedPreferences对象
        Context ctx = MainActivity.this;      
        SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
        //存入数据
        Editor editor = sp.edit();
        editor.putString("STRING_KEY", "string");
        editor.putInt("INT_KEY", 0);
        editor.putBoolean("BOOLEAN_KEY", true);
        editor.commit();
       
        //返回STRING_KEY的值
        Log.d("SP", sp.getString("STRING_KEY", "none"));
        //如果NOT_EXIST不存在,则返回值为"none"
        Log.d("SP", sp.getString("NOT_EXIST", "none"));
     }
 }

SP.xml文件的具体内容如下:

 代码如下 复制代码

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>2 <map>3 <string name="STRING_KEY">string</string>4 <int name="INT_KEY" value="0" />5 <boolean name="BOOLEAN_KEY" value="true" />6 </map>

本文章给大家介绍一款Android学习笔记之裁剪图片代码,有需要的朋友可参考参考。

在Android平台下开发处理图片裁剪的应用,如果感觉实现的逻辑比较麻烦,比如说需要写类此Win32下的橡皮筋类 CRectTracker来设置裁剪区域,这里给大家一个最简单可靠的方法,通过下面的Intent调用系统的Camera程序的裁剪功能实现图片修剪。

java

 代码如下 复制代码
Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setClassName("com.android.camera", "com.android.camera.CropImage");

 

 不过这里提醒大家可能会出现无法找到Activity的android.content.ActivityNotFoundException异常,这是由于Android内部的gallery和camera 都有处理,可以尝试另一种URI,com.android.gallery的com.android.camera.CropImage,在setClassName时,具体的代码为

java

 代码如下 复制代码

final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
intent.setData(Uri.fromFile(mFile));
intent.putExtra("outputX", width);
intent.putExtra("outputY", height);
intent.putExtra("aspectX", width);
intent.putExtra("aspectY", height);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.parse("file:/" + mFile.getAbsolutePath()));
startActivityForResult(intent, REQUEST_CROP_IMAGE);

本文章来给各位朋友介绍一个android图像绘制--获取本地图片或拍照图片代码,有需要了解的朋友可以参考参考。

从SD卡中获取图片资源,或者拍一张新的图片。
  注释:拍照获取的话,可以指定图片的保存地址,在此不说明。
  从SD卡中获取图片资源,或者拍一张新的图片。
  先贴代码
  获取图片:
  注释:拍照获取的话,可以指定图片的保存地址,在此不说明。
  

 代码如下 复制代码
CharSequence[] items = {"相册", "相机"};
  new AlertDialog.Builder(this)
  .setTitle("选择图片来源")
  .setItems(items, new OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
  if( which == SELECT_PICTURE ){
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.addCategory(Intent。CATEGORY_OPENABLE);
  intent.setType("image/*");
  startActivityForResult(Intent。createChooser(intent, "选择图片"), SELECT_PICTURE);
  }else{
  Intent intent = new Intent(MediaStore。ACTION_IMAGE_CAPTURE);
  startActivityForResult(intent, SELECT_CAMER);
  }
  }
  })
  .create().show();
  CharSequence[] items = {"相册", "相机"};
  new AlertDialog.Builder(this)
  .setTitle("选择图片来源")
  .setItems(items, new OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
  if( which == SELECT_PICTURE ){
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.addCategory(Intent.CATEGORY_OPENABLE);
  intent.setType("image/*");
  startActivityForResult(Intent.createChooser(intent, "选择图片"), SELECT_PICTURE);
  }else{
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  startActivityForResult(intent, SELECT_CAMER);
  }
  }
  })
  .create().show();

处理图片,方法一,直接处理返回图片:
  注释:
  1、网上有说明,直接处理返回的图片是被系统压缩过的,不过自己在测试的过程并没有区别;
  2、如果用户不断的重新获取图片的话,必须把现在的Bmp内存释放,否则会报错! bmp.recycle()。

 代码如下 复制代码

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  //选择图片
  Uri uri = data.getData();
  ContentResolver cr = this.getContentResolver();
  try {
  if(bmp != null)//如果不释放的话,不断取图片,将会内存不够
  bmp.recycle();
  bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  System.out.println("the bmp toString: " + bmp);
  imageSV.setBmp(bmp);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  //选择图片
  Uri uri = data.getData();
  ContentResolver cr = this.getContentResolver();
  try {
  if(bmp != null)//如果不释放的话,不断取图片,将会内存不够
  bmp.recycle();
  bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  System.out.println("the bmp toString: " + bmp);
  imageSV.setBmp(bmp);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }

  

处理图片,方法二,获得图片的地址再处理:

 代码如下 复制代码

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  Uri uri = data.getData();
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj,                 // Which columns to return
  null,       // WHERE clause; which rows to return (all rows)
  null,       // WHERE clause selection arguments (none)
  null);                 // Order-by clause (ascending by name)
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  String path = cursor.getString(column_index);
  bmp = BitmapFactory.decodeFile(path);
  System.out.println("the path is :" + path);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  Uri uri = data.getData();
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj,                 // Which columns to return
  null,       // WHERE clause; which rows to return (all rows)
  null,       // WHERE clause selection arguments (none)
  null);                 // Order-by clause (ascending by name)
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  String path = cursor.getString(column_index);
  bmp = BitmapFactory.decodeFile(path);
  System.out.println("the path is :" + path);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }

本文章给大家介绍一篇关于android中利用ImageView 图片循环播放代码,功能由三个文件组成一个是xml,一个是主处理文件,另一个是预览文件了,有需要了解的朋友可参考。

xml

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/linearLayout" >
 
</LinearLayout>

主文件:

 代码如下 复制代码

public class picBarActivity extends Activity{
        private LinearLayout linearLayout;
        private picBar myView;
         
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.pic_progress);
                 
                linearLayout = (LinearLayout)this.findViewById(R.id.linearLayout);
                myView = new picBar(this);
                linearLayout.addView(myView);
        }
}

View文件:

 代码如下 复制代码


public class picBar extends View{          
 
        int COMPONENT_WIDTH;//控件的宽度  
        int COMPONENT_HEIGHT;//控件的高度  
        boolean initflag = false;//是否已经初始化图片  
        Bitmap[] bmp;//用来存放图片的数组  
        int currIndex = 0;//当前播放图片的ID  
        int[] bitmapId;//图片编号ID  
        boolean workFlag = true;//播放图片的线程标识位  
 
        public picBar(Context context) {
                super(context);
                 
                //首先,要播放图片,就先要有图片,那就先给各个图片编号吧,这里的图片资源存放在了res下的drawable文件夹下了  
                bitmapId =new int[]{R.drawable.loading1_03, R.drawable.loading2_03, R.drawable.loading3_03}; 
                 
                //好了,图片的编号现在已经搞定了,接下来该干什么呢?对,应该将资源里的图片塞进Bitmap数组了,那么我们先来确定将要播放的图片的数量,即Bitmap数组的长度
                bmp = new Bitmap[bitmapId.length];//这里不要直接将数值赋给bmp,因为我们可能会不定期地更换图片资源,这样我们就要修改多处代码,而我们这样根据  
 
                //图片的ID来确定图片的数量,以减少不必要的麻烦,下面开始初始化图片,我们将初始化图片放在一个函数里  
                initBitmap();//图片初始化完毕  
 
                //图片初始化完毕了,接下来我们要做的就是播放图片了,但是播放图片之前,我们有一个问题,就是怎样让图片实现循环播放?这里我们另开一个新的线程来定时更改  
 
                //要播放的图片的ID,以实现图片的循环播放,要实现循环播放图片的功能,我们需要覆写onDraw函数,首先,我们来新开一个线程  
 
                new Thread(){  
 
                        //重写run方法  
                        public void run(){
                                // TODO Auto-generated method stub  
                                while(workFlag)//一直执行这个循环(死循环)  
                                {  
                                        currIndex = (currIndex+1)%bitmapId.length;//更改图片的ID  
                                        picBar.this.postInvalidate();//刷新屏幕,导致屏幕重绘  
                                        try
                                        {  
                                                Thread.sleep(3000);//到此处暂停3秒钟,然后继续执行run函数,即实现每隔3秒钟刷新屏幕一次  
                                        } 
                                        catch (InterruptedException e)   
                                        {  
                                                // TODO Auto-generated catch block  
                                                e.printStackTrace();  
                                        } 
                                } 
                        } 
                }.start(); 
        }
 
        //初始化图片  
 
        public void initBitmap()  
 
        {  
 
                //获取资源图片  
 
                Resources res = this.getResources();  
 
                for(int i=0;i<bitmapId.length;i++){  
                        bmp<I> = BitmapFactory.decodeResource(res, bitmapId<I>);  
                } 
        } 
 
        //覆写onDraw方法  
        @Override
        protected void onDraw(Canvas canvas)   
        {  
                // TODO Auto-generated method stub  
                super.onDraw(canvas);  
                if(!initflag)//检查是偶已经获取控件的宽和高,如果没有,那么就获取控件的宽和高  
                {  
                        COMPONENT_WIDTH = this.getWidth();  
                        COMPONENT_HEIGHT = this.getHeight();  
                        initflag = true;  
                } 
                Paint p = new Paint();
                canvas.drawBitmap(bmp[currIndex], 0, 0, p);//绘制图片  
        } 
 
}

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20