天天看點

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

<a href="http://webabcd.blog.51cto.com/1787395/341976" target="_blank">[索引頁]</a>

<a href="http://down.51cto.com/data/100088" target="_blank">[源碼下載下傳]</a>

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

介紹

在 Android 中使用各種控件(View)

TextSwitcher - 文字轉換器控件(改變文字時增加一些動畫效果)

Gallery - 縮略圖浏覽器控件

ImageSwitcher - 圖檔轉換器控件(改變圖檔時增加一些動畫效果)

GridView - 網格控件

ListView - 清單控件

ExpandableList - 支援展開/收縮功能的清單控件

1、TextSwitcher 的 Demo

textswitcher.xml 

&lt;?xml version="1.0" encoding="utf-8"?&gt; 

&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

        android:orientation="vertical" android:layout_width="fill_parent" 

        android:layout_height="fill_parent"&gt; 

        &lt;Button android:id="@+id/btnChange" android:layout_width="wrap_content" 

                android:layout_height="wrap_content" android:text="改變文字" /&gt; 

        &lt;!-- 

                TextSwitcher - 文字轉換器控件(改變文字時增加一些動畫效果) 

        --&gt; 

        &lt;TextSwitcher android:id="@+id/textSwitcher" 

                android:layout_width="fill_parent" android:layout_height="wrap_content" /&gt; 

&lt;/LinearLayout&gt;

_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 

        public View makeView() { 

                TextView textView = new TextView(this); 

                textView.setTextSize(36); 

                return textView; 

}

2、Gallery 的 Demo

gallery.xml

                Gallery - 縮略圖浏覽器控件 

                        spacing - 縮略圖清單中各個縮略圖之間的間距 

        &lt;Gallery android:id="@+id/gallery" android:layout_width="fill_parent" 

                android:layout_height="wrap_content" android:spacing="20px" /&gt; 

_Gallery.java

import android.content.Context; 

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 { 

                this.setContentView(R.layout.gallery); 

                setTitle("Gallery"); 

                Gallery gallery = (Gallery) findViewById(R.id.gallery); 

                // 為縮略圖浏覽器指定一個擴充卡 

                gallery.setAdapter(new ImageAdapter(this)); 

                // 響應 在縮略圖清單上選中某個縮略圖後的 事件 

                gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

                        public void onItemSelected(AdapterView&lt;?&gt; parent, View v, 

                                        int position, long id) { 

                                Toast.makeText(_Gallery.this, String.valueOf(position), Toast.LENGTH_SHORT).show(); 

                        public void onNothingSelected(AdapterView&lt;?&gt; 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) { 

                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

                ImageSwitcher - 圖檔轉換器控件(改變圖檔時增加一些動畫效果) 

        &lt;ImageSwitcher android:id="@+id/imageSwitcher" 

_ImageSwitcher.java

import android.widget.ImageSwitcher; 

// 圖檔轉換器的使用基本同文字轉換器 

// 以下是一個用 ImageSwitcher + Gallery 實作的經典的圖檔浏覽器的 Demo 

public class _ImageSwitcher extends Activity implements 

                ViewSwitcher.ViewFactory { 

        private ImageSwitcher mSwitcher; 

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

                                mSwitcher.setImageResource(mImageIds[position]); 

        private Integer[] mImageIds = { R.drawable.icon01, R.drawable.icon02, 

                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

&lt;!-- 

        GridView - 網格控件 

                numColumns="auto_fit" - 列數自适應 

                stretchMode - 縮放模式(stretchMode="columnWidth" - 縮放與列寬大小同步) 

--&gt; 

&lt;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"&gt; 

&lt;/GridView&gt;

_GridView.java

import android.widget.GridView; 

public class _GridView extends Activity { 

                this.setContentView(R.layout.gridview); 

                setTitle("GridView"); 

                GridView gridView = (GridView) findViewById(R.id.gridView); 

                // 指定網格控件的擴充卡為自定義的圖檔擴充卡 

                gridView.setAdapter(new ImageAdapter(this)); 

        // 自定義的圖檔擴充卡 

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

<a href="http://webabcd.blog.51cto.com/1787395/342089" target="_blank">未完待續&gt;&gt;</a>

OK

     本文轉自webabcd 51CTO部落格,原文連結:http://blog.51cto.com/webabcd/342090,如需轉載請自行聯系原作者

繼續閱讀