`
xindrace
  • 浏览: 94002 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android入门第十二篇之Gallery

 
阅读更多

 本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

       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>  

 

程序源码:

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;  
        }  
          
    };  
}  

 

 

分享到:
评论

相关推荐

    Android入门第十二篇之Gallery.doc

    Android入门第十二篇之Gallery

    Android入门第十二篇之Gallery.docx

    Android入门第十二篇之Gallery.docx

    Android入门到精通源代码.

    第12章 Android的搜索引擎和Gtalk开发 12.1 搜索引擎在手机中的应用 12.1.1 本地搜索 12.1.2 Web搜索 12.2 Android搜索引擎API简介 12.3 应用实例详解:过滤式搜索 引擎程序 12.3.1 实例分析 12.3.2 实例实现 12.4 ...

    android开发入门与实战(下)

    第12章 Android综合案例一——RSS阅读器实例 12.1 RSS介绍 12.1.1 RSS基础 12.1.2 RSS的历史 12.1.3 RSS语法介绍 12.2 SAX介绍 12.2.1 SAX基础 12.2.2 使用SAX的作用 12.2.3 怎样使用SAX 12.3 RSS阅读器设计 12.3.1 ...

    android一步一步最基础学习__新手

    第十二讲:用户界面 View(七) ListView 第十三讲:用户界面 View(八) Gallery,GridView 第十四讲:Service入门指南 第十五讲:SQLite入门指南 第十六讲:菜单 Android Menu 第十七讲:对话框 Android ...

    android开发入门与实战(上)

    第12章 Android综合案例一——RSS阅读器实例 12.1 RSS介绍 12.1.1 RSS基础 12.1.2 RSS的历史 12.1.3 RSS语法介绍 12.2 SAX介绍 12.2.1 SAX基础 12.2.2 使用SAX的作用 12.2.3 怎样使用SAX 12.3 RSS阅读器设计 12.3.1 ...

    《Google Android开发入门与实战》.pdf

    第12章 android综合案例一——rss阅读器实例 205 12.1 rss介绍 205 12.1.1 rss基础 205 12.1.2 rss的历史 205 12.1.3 rss语法介绍 206 12.2 sax介绍 207 12.2.1 sax基础 207 12.2.2 使用sax的...

    Google.Android开发入门与实战

    第12章 Android综合案例一——RSS阅读器实例 12.1 RSS介绍 12.1.1 RSS基础 12.1.2 RSS的历史 12.1.3 RSS语法介绍 12.2 SAX介绍 12.2.1 SAX基础 12.2.2 使用SAX的作用 12.2.3 怎样使用SAX 12.3 RSS阅读器设计 12.3.1 ...

    android开发资料大全

    android入门与提高必看指南 Android入门逆引手册 Android开发指南中文版、创意设计 【Android系统原理与开发要点详解】/底层 应用 框架 Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列...

    Google Android开发入门与实战的代码

    第12章 Android综合案例一——RSS阅读器实例 205 12.1 RSS介绍 205 12.1.1 RSS基础 205 12.1.2 RSS的历史 205 12.1.3 RSS语法介绍 206 12.2 SAX介绍 207 12.2.1 SAX基础 207 12.2.2 使用SAX的...

    老罗android视频开发源码和ppt经典

    一、Android入门介绍 视频教程 1.1 android系统介绍 1.2 android系统框架的介绍 1.3 如何搭建android开发环境 1.4 android生命周期的介绍 1.5 android使用全局变量传递数据 1.6 android使用剪切板传递数据 1.7 意图...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

Global site tag (gtag.js) - Google Analytics