Android入门之Gallery用法实例解析

本文实例介绍的Android的Gallery控件是个很不错的看图控件,可以大大减轻开发者对于看图功能的开发,并且效果也很美观。本文实例中的Gallery的用法,主要实现用反射机制来动态读取资源中的图片。

该实例代码运行的效果图如下:

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="fill_parent" android:layout_width="fill_parent"></Gallery> </LinearLayout>

Java程序源码如下:

package com.testImageView; import java.lang.reflect.Field; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.AdapterView.OnItemClickListener; public class testImageView extends Activity { private Gallery mGallery; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mGallery = (Gallery)findViewById(R.id.gallery); try { mGallery.setAdapter(new ImageAdapter(this)); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } mGallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { testImageView.this.setTitle(String.valueOf(position)); } }); } /* * class ImageAdapter is used to control gallery source and operation. */ private class ImageAdapter extends BaseAdapter{ private Context mContext; private ArrayList<Integer> imgList=new ArrayList<Integer>(); private ArrayList<Object> imgSizes=new ArrayList<Object>(); public ImageAdapter(Context c) throws IllegalArgumentException, IllegalAccessException{ mContext = c; //用反射机制来获取资源中的图片ID和尺寸 Field[] fields = R.drawable.class.getDeclaredFields(); for (Field field : fields) { if (!"icon".equals(field.getName()))//除了icon之外的图片 { int index=field.getInt(R.drawable.class); //保存图片ID imgList.add(index); //保存图片大小 int size[]=new int[2]; Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index); size[0]=bmImg.getWidth();size[1]=bmImg.getHeight(); imgSizes.add(size); } } } @Override public int getCount() { // TODO Auto-generated method stub return imgList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView i = new ImageView (mContext); //从imgList取得图片ID i.setImageResource(imgList.get(position).intValue()); i.setScaleType(ImageView.ScaleType.FIT_XY); //从imgSizes取得图片大小 int size[]= new int[2]; size=(int[]) imgSizes.get(position); i.setLayoutParams(new Gallery.LayoutParams(size[0], size[1])); return i; } }; }

时间: 2025-01-28 09:30:38

Android入门之Gallery用法实例解析的相关文章

Android入门之Gallery用法实例解析_Android

本文实例介绍的Android的Gallery控件是个很不错的看图控件,可以大大减轻开发者对于看图功能的开发,并且效果也很美观.本文实例中的Gallery的用法,主要实现用反射机制来动态读取资源中的图片. 该实例代码运行的效果图如下:   main.xml源码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andro

Android入门之PopupWindow用法实例解析_Android

本文实例介绍一下PopupWindow对话框.PopupWindow是阻塞对话框,只有在外部线程 或者 PopupWindow本身做退出操作才可以执行.PopupWindow完全依赖Layout做外观,在常见的开发中,PopupWindow应该会与AlertDialog常混用. 先贴出本例中运行的结果图: main.xml的源码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln

Android入门之PopupWindow用法实例解析

本文实例介绍一下PopupWindow对话框.PopupWindow是阻塞对话框,只有在外部线程 或者 PopupWindow本身做退出操作才可以执行.PopupWindow完全依赖Layout做外观,在常见的开发中,PopupWindow应该会与AlertDialog常混用. 先贴出本例中运行的结果图: main.xml的源码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln

Android入门之AlertDialog用法实例分析_Android

本文实例讲述的是AlertDialog,这种对话框会经常遇到.AlertDialog跟WIN32开发中的Dialog不一样,AlertDialog是非阻塞的,而阻塞的对话框用的是PopupWindow. 先贴出该程序运行的截图: main.xml的源码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.co

Android提高之Service用法实例解析_Android

前面文章介绍了Activity以及Intent的使用,本文就来介绍Service.如果把Activity比喻为前台程序,那么Service就是后台程序,Service的整个生命周期都只会在后台执行.Service跟Activity一样也由Intent调用.在工程里想要添加一个Service,先新建继承Service的类,然后到AndroidManifest.xml -> Application ->Application Nodes中的Service标签中添加.  Service要由Activ

Android入门之AlertDialog用法实例分析

本文实例讲述的是AlertDialog,这种对话框会经常遇到.AlertDialog跟WIN32开发中的Dialog不一样,AlertDialog是非阻塞的,而阻塞的对话框用的是PopupWindow. 先贴出该程序运行的截图: main.xml的源码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.co

Android提高之Service用法实例解析

前面文章介绍了Activity以及Intent的使用,本文就来介绍Service.如果把Activity比喻为前台程序,那么Service就是后台程序,Service的整个生命周期都只会在后台执行.Service跟Activity一样也由Intent调用.在工程里想要添加一个Service,先新建继承Service的类,然后到AndroidManifest.xml -> Application ->Application Nodes中的Service标签中添加. Service要由Activi

Android开发之浏览器用法实例详解(调用uc,opera,qq浏览器访问网页)_Android

本文实例讲述了Android开发之浏览器用法.分享给大家供大家参考,具体如下: 一.启动android默认浏览器 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://www.jb51.net"); intent.setData(content_url); startActivity(inten

Android开发之TabActivity用法实例详解_Android

本文实例讲述了Android开发之TabActivity用法.分享给大家供大家参考,具体如下: 一.简介 TabActivity继承自Activity,目的是让同一界面容纳更多的内容.TabActivity实现标签页的功能,通过导航栏对各个页面进行管理. 二.XML布局文件 注意: 1.TabActivity的布局文件要求以TabHost作为XML布局文件的根. 2.通常我们采用线性布局,所以<TabHost> 的子元素是 <LinearLayout>. 3.<TabWidg