Jcheng一霸 发表于 2013-8-28 16:26

第四十五讲:用户界面 View(十二)

>本讲内容:ImageSwitcher 图片切换器 和 TextSwitcher 文本切换器源代码下载:http://www.apkbus.com/data/attachment/forum/201104/29/1812544hwvj8ily84g8zgy.jpg3、在main.xml中添加一个ImageSwitcher组件:    <?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">   
      <imageswitcher android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageSwitcher1">   
      </imageswitcher>   
</linearlayout>4、在MainActivity.java中的代码如下:    package basic.android.lesson45;   
   
import android.app.Activity;   
import android.os.Bundle;   
import android.view.View;   
import android.view.Window;   
import android.view.WindowManager;   
import android.view.animation.AnimationUtils;   
import android.widget.ImageSwitcher;   
import android.widget.ImageView;   
import android.widget.ViewSwitcher.ViewFactory;   
   
public class MainActivity extends Activity {   
   
      //当前显示的图片索引   
      private int index;   
   
      //图片数组   
      private int[] images = { R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4,   
                        R.drawable.image5 };   
   
      /** Called when the activity is first created. */   
      @Override   
      public void onCreate(Bundle savedInstanceState) {   
   
                super.onCreate(savedInstanceState);   
   
                //全屏设置   
                requestWindowFeature(Window.FEATURE_NO_TITLE);   
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);   
   
                setContentView(R.layout.main);   
   
                //得到ImageSwitcher对象   
                final ImageSwitcher is = (ImageSwitcher) findViewById(R.id.imageSwitcher1);   
   
                //实现并设置工厂内部接口的makeView方法,用来显示视图。   
                is.setFactory(new ViewFactory() {   
                        @Override   
                        public View makeView() {   
                              return new ImageView(MainActivity.this);   
                        }   
                });   
   
                //设置图片来源   
                is.setImageResource(images);   
   
                //设置点击监听器   
                is.setOnClickListener(new View.OnClickListener() {   
   
                        @Override   
                        public void onClick(View v) {   
                              //点击会切换图片   
                              index++;   
                              if (index >= images.length) {   
                                        index = 0;   
                              }   
                              is.setImageResource(images);   
                        }   
                });   
   
                //设置切入动画   
                is.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.slide_in_left));   
                //设置切出动画   
                is.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.slide_out_right));   
   
      }   
}   5、编译并运行程序,查看结果:抱歉我抓不到切换图片瞬间的截图。http://www.apkbus.com/data/attachment/forum/201104/29/181310q80sw7e42q5eq5ia.png      
二、TextSwitcher 文本切换器文本的切换动画也是有一个叫TextSwitcher的类可以做到,它的使用方法和ImageSwitcher类似。至于为什么用法如此相似,还是看下面两张继承关系图吧:   
http://www.apkbus.com/data/attachment/forum/201104/29/181312nimnn7an4mvdwm7w.jpghttp://www.apkbus.com/data/attachment/forum/201104/29/181313qz51fc17drr13r9o.jpg   
下面直接上例子:1、新建一个项目:Lesson45_TextSwitcher2、在main.xml中添加一个TextSwitcher组件:    <?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">   
      <textswitcher android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textSwitcher1">   
      </textswitcher>   
</linearlayout>   3、在MainActivity.java中的代码如下:    package basic.android.lesson45;   
   
import android.app.Activity;   
import android.graphics.Color;   
import android.os.Bundle;   
import android.view.View;   
import android.view.animation.AnimationUtils;   
import android.widget.TextSwitcher;   
import android.widget.TextView;   
import android.widget.ViewSwitcher.ViewFactory;   
   
public class MainActivity extends Activity {   
   
      // 索引   
      private int index;   
      // 文本数组   
      private String[] poemArray = { "去年今日栽", "临去见花开", "好住守空院", "夜间人不来" };   
   
      /** Called when the activity is first created. */   
      @Override   
      public void onCreate(Bundle savedInstanceState) {   
                super.onCreate(savedInstanceState);   
                setContentView(R.layout.main);   
   
                //定义文字切换器   
                final TextSwitcher ts = (TextSwitcher) findViewById(R.id.textSwitcher1);   
   
                //定义视图显示工厂,并设置   
                ts.setFactory(new ViewFactory() {   
   
                        @Override   
                        public View makeView() {   
                              TextView tv =new TextView(MainActivity.this);   
                              tv.setTextSize(32);   
                              tv.setTextColor(Color.GREEN);   
                              return tv;   
                        }   
                });   
   
                // 设置图片来源   
                ts.setText(poemArray);   
   
                // 设置点击监听器   
                ts.setOnClickListener(new View.OnClickListener() {   
   
                        @Override   
                        public void onClick(View v) {   
                              // 点击会切换图片   
                              index++;   
                              if (index >= poemArray.length) {   
                                        index = 0;   
                              }   
                              ts.setText(poemArray);   
                        }   
                });   
   
                // 设置切入动画   
                ts.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.slide_in_left));   
                // 设置切出动画   
                ts.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.slide_out_right));   
   
      }   
}   
   4、编译并运行程序,查看结果:   
http://www.apkbus.com/data/attachment/forum/201104/29/181253wj29c99mzr6j8j9k.png      
抱歉还是没法截取到切换时的场景#_#好吧,本讲就到这里,各位下次再见。</div
页: [1]
查看完整版本: 第四十五讲:用户界面 View(十二)