[索引页]
[×××]


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

作者:webabcd


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


1、TextSwitcher 的 Demo
textswitcher.xml <?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"android:layout_width="fill_parent"
        android:layout_height="fill_parent">

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

        
        <TextSwitcherandroid:id="@+id/textSwitcher"
                android:layout_width="fill_parent"android:layout_height="wrap_content"/>

LinearLayout> _TextSwitcher.javapackage 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;

publicclass _TextSwitcherextends Activityimplements ViewSwitcher.ViewFactory {

        @Override
        protectedvoid 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
                        publicvoid 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
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        
        <Galleryandroid:id="@+id/gallery"android:layout_width="fill_parent"
                android:layout_height="wrap_content"android:spacing="20px"/>

LinearLayout> _Gallery.javapackage 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;

publicclass _Galleryextends Activity {

        @Override
        protectedvoid 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
                        publicvoid onItemSelected(AdapterView<?> parent, View v,
                                        int position,long id) {
                                Toast.makeText(_Gallery.this, String.valueOf(position), Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        publicvoid onNothingSelected(AdapterView<?> arg0) {

                        }
                });
        }

        // 继承 BaseAdapter 用以实现自定义的图片适配器
        publicclass ImageAdapterextends BaseAdapter {

                private Context mContext;

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

                publicint getCount() {
                        return mThumbIds.length;
                }

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

                publiclong getItemId(int position) {
                        return position;
                }

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

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

                        return p_w_picpath;
                }
        }

        // 需要显示的图片集合
        private Integer[] mThumbIds = { R.drawable.icon01, R.drawable.icon02,
                        R.drawable.icon03, R.drawable.icon04, R.drawable.icon05 };
}  3、ImageSwitcher 的 Demo
p_w_picpathswitcher.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <Galleryandroid:id="@+id/gallery"android:layout_width="fill_parent"
                android:layout_height="wrap_content"android:spacing="20px"/>

        
        <ImageSwitcherandroid:id="@+id/p_w_picpathSwitcher"
                android:layout_width="fill_parent"android:layout_height="wrap_content"/>

LinearLayout> _ImageSwitcher.javapackage 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
publicclass _ImageSwitcherextends Activityimplements
                ViewSwitcher.ViewFactory {

        private ImageSwitcher mSwitcher;

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

                setTitle("ImageSwithcer");

                mSwitcher = (ImageSwitcher) findViewById(R.id.p_w_picpathSwitcher);
                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
                        publicvoid onItemSelected(AdapterView<?> parent, View v,
                                        int position,long id) {
                                mSwitcher.setImageResource(mImageIds[position]);
                        }

                        @Override
                        publicvoid onNothingSelected(AdapterView<?> arg0) {

                        }
                });
        }

        publicclass ImageAdapterextends BaseAdapter {

                private Context mContext;

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

                publicint getCount() {
                        return mThumbIds.length;
                }

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

                publiclong getItemId(int position) {
                        return position;
                }

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

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

                        return p_w_picpath;
                }
        }

        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 p_w_picpath =new ImageView(this);
                p_w_picpath.setMinimumHeight(200);
                p_w_picpath.setMinimumWidth(200);
                p_w_picpath.setScaleType(ImageView.ScaleType.FIT_CENTER);
                p_w_picpath.setLayoutParams(new ImageSwitcher.LayoutParams(
                                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
                return p_w_picpath;
        }
}  4、GridView 的 Demo
gridview.xml
<?xmlversion="1.0"encoding="utf-8"?>


<GridViewxmlns: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.javapackage 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;

publicclass _GridViewextends Activity {

        @Override
        protectedvoid 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));
        }

        // 自定义的图片适配器
        publicclass ImageAdapterextends BaseAdapter {

                private Context mContext;

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

                publicint getCount() {
                        return mThumbIds.length;
                }

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

                publiclong getItemId(int position) {
                        return position;
                }

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

                        p_w_picpathView.setImageResource(mThumbIds[position]);

                        return p_w_picpathView;
                }

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

更多相关文章

  1. Android ProgressBar控件理解
  2. Android Studio开发基础之AutoCompleteTextView控件的使用
  3. Android LinearLayout中实现水平方向控件居右
  4. android listview继承BaseAdapter,自定义的适配器,getView方法执
  5. Android -- 设置textview文字居中或者控件居中
  6. 系出名门Android(7) - 控件(View)之ZoomControls, Include, Vide
  7. 2.3.2EditText控件
  8. Android 开关控件Switch使用
  9. android ListView控件 去上下滑动阴影 选中背景黄色

随机推荐

  1. android语音识别和语音播报相关资料总结
  2. Android(安卓)点击按钮,文字改变颜色
  3. android 给图片加水印
  4. android 使用动画 Button移动后不响应点
  5. Android(安卓)之 ProgressBar用法介绍
  6. MotionEvent 概述
  7. Android中的MD5加密
  8. Android自定义Dialog以控制其位置和宽高
  9. OpenGL ES教程V之更多3D模型(原文对照)
  10. Android(Java):Android(安卓)jni源代码