系出名门Android(8) - 控件(View)之TextSwitcher, Gallery, ImageSwitcher, GridView, ListView

[索引页]
[源码下载]


系出名门Android(8) - 控件(View)之TextSwitcher, Gallery, ImageSwitcher, GridView, ListView, ExpandableList


作者: webabcd


介绍
在 Android 中使用各种控件(View)
  • TextSwitcher - 文字转换器控件(改变文字时增加一些动画效果)
  • Gallery - 缩略图浏览器控件
  • ImageSwitcher - 图片转换器控件(改变图片时增加一些动画效果)
  • GridView - 网格控件
  • ListView - 列表控件
  • ExpandableList - 支持展开/收缩功能的列表控件


1、TextSwitcher 的 Demo
textswitcher.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" >  

         < Button   android:id ="@+id/btnChange"   android:layout_width ="wrap_content"  
                 android:layout_height ="wrap_content"   android:text ="改变文字"   />  

        <!--  
                TextSwitcher - 文字转换器控件(改变文字时增加一些动画效果) 
        
-->  
         < TextSwitcher   android:id ="@+id/textSwitcher"  
                 android:layout_width ="fill_parent"   android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_TextSwitcher.java
package  com.webabcd.view;  

import  java.util.Random;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.view.View;  
import  android.view.animation.Animation;  
import  android.view.animation.AnimationUtils;  
import  android.widget.Button;  
import  android.widget.TextSwitcher;  
import  android.widget.TextView;  
import  android.widget.ViewSwitcher;  

public   class  _TextSwitcher   extends  Activity   implements  ViewSwitcher.ViewFactory {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.textswithcer);  

                setTitle( "TextSwithcer");  

                 final  TextSwitcher switcher = (TextSwitcher) findViewById(R.id.textSwitcher);  
                 // 指定转换器的 ViewSwitcher.ViewFactory 
                switcher.setFactory( this);  
                  
                 // 设置淡入和淡出的动画效果 
                Animation in = AnimationUtils.loadAnimation( this, android.R.anim.fade_in);  
                Animation out = AnimationUtils.loadAnimation( this, android.R.anim.fade_out);  
                switcher.setInAnimation(in);  
                switcher.setOutAnimation(out);  

                 // 单击一次按钮改变一次文字 
                Button btnChange = (Button)   this.findViewById(R.id.btnChange);  
                btnChange.setOnClickListener( new  View.OnClickListener() {  
                        @Override  
                         public   void  onClick(View v) {  
                                switcher.setText(String.valueOf( new  Random().nextInt()));  
                        }  
                });  
        }  

         // 重写 ViewSwitcher.ViewFactory 的 makeView(),返回一个 View 
        @Override  
         public  View makeView() {  
                TextView textView =   new  TextView( this);  
                textView.setTextSize(36);  
                 return  textView;  
        }  
}
 
 
2、Gallery 的 Demo
gallery.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 - 缩略图浏览器控件 
                        spacing - 缩略图列表中各个缩略图之间的间距 
        
-->  
         < Gallery   android:id ="@+id/gallery"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   android:spacing ="20px"   />  

</ LinearLayout >
 
_Gallery.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.content.Context;  
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.Toast;  
import  android.widget.Gallery.LayoutParams;  

public   class  _Gallery   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.gallery);  

                setTitle( "Gallery");  

                Gallery gallery = (Gallery) findViewById(R.id.gallery);  
                 // 为缩略图浏览器指定一个适配器 
                gallery.setAdapter( new  ImageAdapter( this));  
                 // 响应 在缩略图列表上选中某个缩略图后的 事件 
                gallery.setOnItemSelectedListener( new  AdapterView.OnItemSelectedListener() {  
                        @Override  
                         public   void  onItemSelected(AdapterView<?> parent, View v,  
                                         int  position,   long  id) {  
                                Toast.makeText(_Gallery. this, String.valueOf(position), Toast.LENGTH_SHORT).show();  
                        }  

                        @Override  
                         public   void  onNothingSelected(AdapterView<?> arg0) {  

                        }  
                });  
        }  

         // 继承 BaseAdapter 用以实现自定义的图片适配器 
         public   class  ImageAdapter   extends  BaseAdapter {  

                 private  Context mContext;  

                 public  ImageAdapter(Context context) {  
                        mContext = context;  
                }  

                 public   int  getCount() {  
                         return  mThumbIds.length;  
                }  

                 public  Object getItem( int  position) {  
                         return  position;  
                }  

                 public   long  getItemId( int  position) {  
                         return  position;  
                }  

                 public  View getView( int  position, View convertView, ViewGroup parent) {  
                        ImageView image =   new  ImageView(mContext);  

                        image.setImageResource(mThumbIds[position]);  
                        image.setAdjustViewBounds( true);  
                        image.setLayoutParams( new  Gallery.LayoutParams(  
                                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  

                         return  image;  
                }  
        }  

         // 需要显示的图片集合 
         private  Integer[] mThumbIds = { R.drawable.icon01, R.drawable.icon02,  
                        R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 };  
}
 
 
3、ImageSwitcher 的 Demo
imageswitcher.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_width ="fill_parent"  
                 android:layout_height ="wrap_content"   android:spacing ="20px"   />  

        <!--  
                ImageSwitcher - 图片转换器控件(改变图片时增加一些动画效果) 
        
-->  
         < ImageSwitcher   android:id ="@+id/imageSwitcher"  
                 android:layout_width ="fill_parent"   android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_ImageSwitcher.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.content.Context;  
import  android.os.Bundle;  
import  android.view.View;  
import  android.view.ViewGroup;  
import  android.view.animation.AnimationUtils;  
import  android.widget.AdapterView;  
import  android.widget.BaseAdapter;  
import  android.widget.Gallery;  
import  android.widget.ImageSwitcher;  
import  android.widget.ImageView;  
import  android.widget.ViewSwitcher;  
import  android.widget.Gallery.LayoutParams;  

// 图片转换器的使用基本同文字转换器 
// 以下是一个用 ImageSwitcher + Gallery 实现的经典的图片浏览器的 Demo 
public   class  _ImageSwitcher   extends  Activity   implements  
                ViewSwitcher.ViewFactory {  

         private  ImageSwitcher mSwitcher;  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.imageswithcer);  

                setTitle( "ImageSwithcer");  

                mSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);  
                mSwitcher.setFactory( this);  
                mSwitcher.setInAnimation(AnimationUtils.loadAnimation( this,  
                                android.R.anim.fade_in));  
                mSwitcher.setOutAnimation(AnimationUtils.loadAnimation( this,  
                                android.R.anim.fade_out));  

                Gallery gallery = (Gallery) findViewById(R.id.gallery);  
                gallery.setAdapter( new  ImageAdapter( this));  
                gallery.setOnItemSelectedListener( new  AdapterView.OnItemSelectedListener() {  
                        @Override  
                         public   void  onItemSelected(AdapterView<?> parent, View v,  
                                         int  position,   long  id) {  
                                mSwitcher.setImageResource(mImageIds[position]);  
                        }  

                        @Override  
                         public   void  onNothingSelected(AdapterView<?> arg0) {  

                        }  
                });  
        }  

         public   class  ImageAdapter   extends  BaseAdapter {  

                 private  Context mContext;  

                 public  ImageAdapter(Context context) {  
                        mContext = context;  
                }  

                 public   int  getCount() {  
                         return  mThumbIds.length;  
                }  

                 public  Object getItem( int  position) {  
                         return  position;  
                }  

                 public   long  getItemId( int  position) {  
                         return  position;  
                }  

                 public  View getView( int  position, View convertView, ViewGroup parent) {  
                        ImageView image =   new  ImageView(mContext);  

                        image.setImageResource(mThumbIds[position]);  
                        image.setAdjustViewBounds( true);  
                        image.setLayoutParams( new  Gallery.LayoutParams(  
                                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  

                         return  image;  
                }  
        }  

         private  Integer[] mThumbIds = { R.drawable.icon01, R.drawable.icon02,  
                        R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 };  

         private  Integer[] mImageIds = { R.drawable.icon01, R.drawable.icon02,  
                        R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 };  

        @Override  
         public  View makeView() {  
                ImageView image =   new  ImageView( this);  
                image.setMinimumHeight(200);  
                image.setMinimumWidth(200);  
                image.setScaleType(ImageView.ScaleType.FIT_CENTER);  
                image.setLayoutParams( new  ImageSwitcher.LayoutParams(  
                                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
                 return  image;  
        }  
}
 
 
4、GridView 的 Demo
gridview.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  

<!--  
        GridView - 网格控件 
                numColumns="auto_fit" - 列数自适应 
                stretchMode - 缩放模式(stretchMode="columnWidth" - 缩放与列宽大小同步) 
-->  
< GridView   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:id ="@+id/gridView"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent"   android:padding ="10px"  
         android:verticalSpacing ="10px"   android:horizontalSpacing ="10px"  
         android:numColumns ="auto_fit"   android:columnWidth ="60px"  
         android:stretchMode ="columnWidth"   android:gravity ="center" >  
</ GridView >
 
_GridView.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.content.Context;  
import  android.os.Bundle;  
import  android.view.View;  
import  android.view.ViewGroup;  
import  android.widget.BaseAdapter;  
import  android.widget.GridView;  
import  android.widget.ImageView;  

public   class  _GridView   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.gridview);  

                setTitle( "GridView");  

                GridView gridView = (GridView) findViewById(R.id.gridView);  
                 // 指定网格控件的适配器为自定义的图片适配器 
                gridView.setAdapter( new  ImageAdapter( this));  
        }  

         // 自定义的图片适配器 
         public   class  ImageAdapter   extends  BaseAdapter {  

                 private  Context mContext;  

                 public  ImageAdapter(Context context) {  
                        mContext = context;  
                }  

                 public   int  getCount() {  
                         return  mThumbIds.length;  
                }  

                 public  Object getItem( int  position) {  
                         return  position;  
                }  

                 public   long  getItemId( int  position) {  
                         return  position;  
                }  

                 public  View getView( int  position, View convertView, ViewGroup parent) {  
                        ImageView imageView;  
                         if  (convertView ==   null) {  
                                imageView =   new  ImageView(mContext);  
                                imageView.setLayoutParams( new  GridView.LayoutParams(48, 48));  
                                imageView.setAdjustViewBounds( false);  
                                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);  
                                imageView.setPadding(5, 5, 5, 5);  
                        }   else  {  
                                imageView = (ImageView) convertView;  
                        }  

                        imageView.setImageResource(mThumbIds[position]);  

                         return  imageView;  
                }  

                 // 网格控件所需图片数据的数据源 
                 private  Integer[] mThumbIds = { R.drawable.icon01, R.drawable.icon02,  
                                R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 };  
        }  
}
 
 


     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/342090 ,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值