- 浏览: 153843 次
- 性别:
- 来自: 茂名
文章分类
最新评论
-
stoneyulu:
很好,正需要要!用来在thread和activity之间传数 ...
在Activity中通过Bundle传递自定义数据类型 -
鱼在陆地上跑:
只能读取TXT格式的文件,而不能读取图片
读取Rescource和asset文件夹中的文件 -
myg_315:
我也在调查这个问题,谢谢!
Android程序的退出终于完美解决,兼容所有SDK -
jk138:
谢谢各位的评论,楼下的建议很好,值得大家注意了.
Android程序的退出终于完美解决,兼容所有SDK -
cyilinycc:
非常感谢你提供的这个方法,但我经过测试之后,发现这个方法存在弊 ...
Android程序的退出终于完美解决,兼容所有SDK
看了几个教程,学会 了两种方法实现Gallery相册,第一种是直接在res文件夹下放图片进行读取,第二种是读取sd卡的图片。
首先,写好布局main.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" > <Gallery android:id="@+id/gallery" android:layout_height="143px" android:layout_width="fill_parent" /> <ImageView android:layout_width="239px" android:layout_height="218px" android:layout_x="38px" android:layout_y="184px" android:id="@+id/ImageView_photo" > </ImageView> </LinearLayout>
其二,在values文件夹下新建一个attr.xml
<?xml version="1.0" encoding="utf-8"?>
<resources> <declare-styleable name="Gallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>
其三,写一个类,ImageAdapter.java
package com.chaowen;
import java.io.File; import java.util.ArrayList; import java.util.List; import android.R.color; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.text.AndroidCharacter; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; public class ImageAdapter extends BaseAdapter { private Context ctx; int mGalleryItemBackground; private List<String> lis; //这是第一种方法,直接用res文件夹下的图片 /*public int[] images = { R.drawable.img01,R.drawable.img02, R.drawable.img03,R.drawable.img04 };*/ public ImageAdapter(Context ctx,List<String> li){ try { this.ctx = ctx; lis = li ; //使用res/values/attr.xml中的<declare-styleable>定义的Gallery属性 TypedArray a = ctx.obtainStyledAttributes(R.styleable.Gallery); //取得Gallery属性的Index id mGalleryItemBackground = a.getResourceId(R.styleable.Gallery_android_galleryItemBackground, Color.GREEN); //让对象的styleable属性能够反复使用 a.recycle(); } catch (Exception e) { e.printStackTrace(); } } @Override public int getCount() { return lis.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View converView, ViewGroup parent) { try { ImageView v = new ImageView(this.ctx); //设定图片给ImageView对象 Bitmap bm = BitmapFactory.decodeFile(lis.get(position).toString()); v.setImageBitmap(bm); /*v.setImageResource(this.images[position]);*/ //重新设定图片的宽高 v.setScaleType(ImageView.ScaleType.FIT_XY); //重新设定layout的宽高 v.setLayoutParams(new Gallery.LayoutParams(128,128)); v.setBackgroundResource(mGalleryItemBackground); return v; } catch (Exception e) { e.printStackTrace(); } return null; } }
最后,在主Activity类的代码如下
package com.chaowen; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Gallery; import android.widget.ImageView; import android.widget.Toast; public class GalleryDemo extends Activity { /** Called when the activity is first created. */ private Gallery mGallery; private ImageView imageView; private ImageAdapter imageAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mGallery =(Gallery) findViewById(R.id.gallery); imageView = (ImageView)findViewById(R.id.ImageView_photo); imageAdapter = new ImageAdapter(this,getSD()); mGallery.setAdapter(imageAdapter); mGallery.setOnItemClickListener(new Gallery.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { //显示该图片是几号 Toast.makeText(GalleryDemo.this, "这是图片:"+position+"号", Toast.LENGTH_SHORT).show(); //设置大图片 String photoURL = getSD().get(position); // imageView.setBackgroundResource(imageAdapter.images[position]); 这是用res资源下的图片的方法进行放大 imageView.setImageURI(Uri.parse(photoURL)); } }); } /** * 获取sd卡的图片 * @return */ private List<String> getSD() { /* 设定目前所在路径 */ List<String> it=new ArrayList<String>(); File f=new File("/sdcard/dcim/Camera/"); File[] files=f.listFiles(); /* 将所有文件存入ArrayList中 */ for(int i=0;i<files.length;i++) { File file=files[i]; if(getImageFile(file.getPath())) it.add(file.getPath()); } return it; } //获得文件的类型 private boolean getImageFile(String fName) { boolean re; /* 取得扩展名 */ String end=fName.substring(fName.lastIndexOf(".")+1, fName.length()).toLowerCase(); /* 按扩展名的类型决定MimeType */ if(end.equals("jpg")||end.equals("gif")||end.equals("png") ||end.equals("jpeg")||end.equals("bmp")) { re=true; } else { re=false; } return re; } }
- GalleryDemo.zip (732 KB)
- 下载次数: 140
发表评论
-
Failed to receive access token
2013-04-24 12:52 1512在 com.weibo.net.Token.java文件中 ... -
Android实例五:Notification通知和Broadcast结合
2011-06-15 11:42 8304第一步.MainActivity.java pack ... -
Android实例四:BroadCast_Receiver
2011-06-15 10:36 6789第一步. MainActivity.java ... -
Android实例三:学习Service
2011-06-15 10:15 1415第一步.MainActivity.java pa ... -
Android实例二:手机数据库SQListe
2011-06-14 11:16 2192[code="java"] ... -
Android实例一:文件搜索
2011-06-13 20:12 3802本例子参考SDK开发范例大全 说明:以ListA ... -
关于android ListView的美化
2011-05-31 08:36 988用心的朋友应该会发现,listview中在设置了背景之后。会有 ... -
Android程序的退出终于完美解决,兼容所有SDK
2011-05-30 16:23 3713上网学了好多方法,关于Android的Activity如何退出 ... -
android兼容2.2及以前版本的退出方法
2011-05-30 14:16 1240首先,在首个activity中写: Intent inten ... -
缩放图片的方法
2011-05-26 15:35 1105代码一: public Bitmap ResizeBi ... -
Android对图片的压缩读取和保存
2011-05-26 12:46 1757在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情 ... -
android显示单位
2011-05-19 16:10 1008px (pixels)像素 一般HVGA代表320 ... -
申请Google Map密钥
2011-05-17 15:25 17531.启动eclipse,依次单 ... -
SharedPreferences
2011-05-17 14:16 1294package wyf.wpf;//声明包语句 imp ... -
Content Provider
2011-05-17 11:54 1137package wyf.wpf; //声明包 ... -
轻量级数据库SQLite
2011-05-17 11:29 1235MySQLiteHelper.java im ... -
读取Rescource和asset文件夹中的文件
2011-05-17 11:01 5263package wyf.wpf; //声明包 ... -
数据存储之IO
2011-05-17 10:54 985package wyf.wpf; import jav ... -
android 检测当前网络并调用系统设置
2011-05-12 10:07 1717/** * 检测网络是否可用 */ pu ... -
Android 菜单(Menu)控件的使用
2011-05-11 14:05 746有两种方法,可以创建。 1.通过xml来创建 ...
相关推荐
"Gallery相册浏览"中的布局可能包含GridView或RecyclerView,这两种视图组件可以用来显示图片列表,支持滚动和缩放。 3. **Intent**: Android系统中的Intent用于启动其他组件(如Activity或Service)。在这个Demo中...
本项目“一个简单的相册GridView、Gallery的结合使用”恰好展示了如何整合这两个组件来实现这一功能。GridView和Gallery都是Android提供的布局控件,它们在显示数据集方面有各自的优势。 ** GridView详解:** ...
`Gallery`和`ImageSwitcher`组件是Android SDK提供的一种有效解决方案,尤其在处理大量图片时,通过异步加载技术可以避免UI线程阻塞,提高用户体验。本文将深入探讨如何利用这两个组件来构建一个高效、流畅的图片...
在Android开发中,"Gallery相册浏览"是一个常见的功能,涉及到用户界面(UI)设计、图片加载、滚动性能优化等多个方面。这个压缩包文件可能包含了实现这一功能的源代码,让我们来详细探讨一下其中可能涉及的关键知识点...
本文将详细介绍两种方法,一种基于郭霖的教程,另一种是经过优化可兼容小米设备的方法。 首先,我们来看郭霖教程中调用相机的方法。郭霖是一位知名的Android开发者,他的教程通常简洁易懂。调用相机的基本思路是...
- 如果图片来自网络,我们需要使用HttpURLConnection、OkHttp或者Retrofit等网络库进行网络请求,获取图片的URL,然后通过图片加载库将其加载到Gallery中。 5. **数据结构**: - 为了实现循环播放,我们需要维护...
3. **异步加载图片**:根据索引值从服务器或本地缓存中获取图片,使用异步加载库加载图片到`ImageSwitcher`。 4. **设置`ImageSwitcher`的动画**:在`ImageSwitcher`中设置合适的切换动画,如`IN_OUT`或自定义动画。...
在Android开发中,ImageSwitcher和Gallery是两个非常实用的组件,它们可以帮助开发者实现丰富的图像展示功能。ImageSwitcher主要用于在不同的图片之间进行平滑切换,而Gallery则提供了一个可以左右滑动浏览多个图片...
本文将详细介绍如何通过拍照和从相册选取两种方式获取头像,并着重解决拍照后图片角度不正确的问题。 首先,让我们来看如何实现从相册获取头像。在Android中,我们可以使用Intent来启动系统的图库应用,让用户选择...
这两个组件结合使用,可以创建出类似于相册应用的用户体验,让用户能够方便地浏览一系列图片。 首先,`Gallery`是Android SDK提供的一种可滚动视图,它允许用户水平滚动一串项目,每个项目通常代表一个图片或者其他...
`Gallery`是Android SDK提供的一种特殊的ListView,它允许用户在一个水平轴上浏览项目,通常用于创建相册或者选择菜单等场景。当需要两个`Gallery`组件同时滑动时,我们可能希望实现一种联动效果,即在一个`Gallery`...
2. 在代码中获取到ImageSwitcher实例,设置动画效果,Android提供了TransitionAnimation和InAnimation两种类型的动画。 3. 创建适配器,如ArrayAdapter,将数据集绑定到ImageSwitcher上,通过适配器的getView方法...
在Android开发中,`Gallery`控件是一种古老但仍然有用的组件,主要用于展示一系列横向滑动的项目,类似于轮播图或者相册。然而,随着Android SDK的更新,`Gallery`已经在API 17(Android 4.2)中被废弃,推荐使用`...
在实际应用中,可以结合使用这两种方式。 五、图片库库支持 Android社区提供了很多优秀的图片库,如Glide、Picasso、Fresco等,它们都集成了异步加载、缓存策略等功能。例如: 1. Glide:轻量级且强大的图片加载库...
在Android开发中,ListView和Gallery是两种常用的布局控件,它们各自有其独特的作用和应用场景。今天我们将深入探讨如何在ListView中嵌入Gallery,以创建一个具有丰富交互体验的UI设计。 ListView是Android中用于...
Android提供了`Intent.ACTION_PICK`和`Intent.ACTION_GET_CONTENT`两种方式来调用相册。通常,我们使用`Intent.createChooser()`结合这两个Intent,让用户选择相册中的图片。选中图片后,可以使用`Intent.ACTION_...
2. 图片选择:用户可以选择从相册( Gallery )中选取图片或者使用相机( Camera )即时拍照。这需要使用Android的Intent机制,通过ACTION_PICK和ACTION_IMAGE_CAPTURE两个Intent类型来实现。ACTION_PICK用于打开...
这个功能允许用户通过两种方式来上传自己的头像:直接使用手机摄像头拍照或者从已有的照片库中选择一张图片。下面我们将详细探讨这一功能涉及的技术点以及实现过程。 首先,我们需要了解两个关键组件:相机(Camera...
在Android开发中,`Gallery`控件和`ImageSwitcher`是两个非常有用的组件,尤其在创建图片轮播或相册应用时。本篇文章将详细解释如何将它们结合起来使用,以实现一个简单的图片浏览功能。 `Gallery`是Android提供的...