android组件之ImageSwitcher

来源:互联网 发布:手机淘宝在哪开店 编辑:程序博客网 时间:2024/05/22 12:46

  ImageSwitcher组件的主要功能是进行图片的切换,要实现图片的切换关键要实现ViewFactory。下面先附上效果图


首先配置main.xml布局用于显示界面

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:gravity="center_horizontal"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ImageSwitcher        android:id="@+id/imgswithcer"                android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal" />    <LinearLayout        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:orientation="horizontal" >        <Button            android:id="@+id/buttonPre"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="上一张" />        <Button            android:id="@+id/buttonNext"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="下一张" />    </LinearLayout></LinearLayout>

在activity中实现工厂类

package com.example.imgswitcherdemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.view.animation.AnimationUtils;import android.widget.Button;import android.widget.ImageSwitcher;import android.widget.ImageView;import android.widget.Toast;import android.widget.ViewSwitcher.ViewFactory;public class MainActivity extends Activity {private int foot = 0;private Button buttonPre = null;private Button buttonNext = null;private ImageSwitcher imgswitcher = null;private int imgRes[] = { R.drawable.pic_head_01, R.drawable.pic_head_01,R.drawable.pic_head_02, R.drawable.pic_head_03,R.drawable.pic_head_04, R.drawable.pic_head_05,R.drawable.pic_head_06, R.drawable.pic_head_07,R.drawable.pic_head_08, R.drawable.pic_head_09,R.drawable.pic_head_10, R.drawable.pic_head_11,R.drawable.pic_head_12, R.drawable.pic_head_13,R.drawable.pic_head_14, R.drawable.pic_head_15,R.drawable.pic_head_16, R.drawable.pic_head_17 };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);this.buttonPre = (Button) this.findViewById(R.id.buttonPre);this.buttonNext = (Button) this.findViewById(R.id.buttonNext);this.imgswitcher = (ImageSwitcher) this.findViewById(R.id.imgswithcer);this.buttonPre.setOnClickListener(new butPreOnClickListener());this.buttonNext.setOnClickListener(new butNextOnClickListener());this.imgswitcher.setFactory(new imgFactory());//设置工厂类this.imgswitcher.setImageResource(MainActivity.this.imgRes[foot]);// 一定要先设置工厂后在设置资源,不然会报空指针异常}private class butPreOnClickListener implements OnClickListener {@Overridepublic void onClick(View v) {if (v == buttonPre) {if (MainActivity.this.foot == 0) {// MainActivity.this.buttonPre.setEnabled(false);Toast.makeText(MainActivity.this, "当前已经是第一张了",Toast.LENGTH_LONG).show();} elseMainActivity.this.foot--;MainActivity.this.imgswitcher.setImageResource(MainActivity.this.imgRes[foot]);// MainActivity.this.buttonPre.setEnabled(true);}}}private class butNextOnClickListener implements OnClickListener {@Overridepublic void onClick(View v) {if (MainActivity.this.foot == MainActivity.this.imgRes.length - 1) {//MainActivity.this.buttonNext.setEnabled(false);Toast.makeText(MainActivity.this, "当前已经是最后一张了",Toast.LENGTH_LONG).show();} elseMainActivity.this.foot++;MainActivity.this.imgswitcher.setImageResource(MainActivity.this.imgRes[foot]);//MainActivity.this.buttonNext.setEnabled(true);}}/*public boolean isCheckButton() {if (MainActivity.this.foot == 0) {MainActivity.this.buttonPre.setEnabled(false);Toast.makeText(MainActivity.this, "当前已经是第一页", Toast.LENGTH_SHORT).show();} elseMainActivity.this.buttonPre.setEnabled(true);if (MainActivity.this.foot == MainActivity.this.imgRes.length - 1) {MainActivity.this.buttonNext.setEnabled(false);Toast.makeText(MainActivity.this, "当前已经是最后一页", Toast.LENGTH_SHORT).show();} elseMainActivity.this.buttonNext.setEnabled(true);return false;}*/     也可以把按钮检测的功能独立出来private class imgFactory implements ViewFactory { //通过ViewFactory接口实现工厂类@Overridepublic View makeView() {ImageView img = new ImageView(MainActivity.this);img.setBackgroundColor(0xFFFFFFFF); // 设置背景img.setScaleType(ImageView.ScaleType.CENTER);img.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); // 定义组件return img;}}}