ImageSwitcher与ViewSwitcher

2024-05-14 00:38

本文主要是介绍ImageSwitcher与ViewSwitcher,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ImageSwitcher

基础

        参考:http://www.cnblogs.com/plokmju/p/android_ImageSwitcher.html

        用于图片的切换。与ImageView类似,只不过在图片的切换过程中,可以设置动画。

设置

        在布局中:android:inAnimation与android:outAnimation

        在代码中:switcher.setInAnimation与switcher.setOutAnimation

使用

        在使用之前必须要调用switcher.setFactroy()方法,示例:

switcher.setFactory(new ViewFactory() {public View makeView() {return new ImageView(MainActivity.this);}});
        只需要在makeView()方法中返回一个ImageView即可。而switcher就是负责把图片展示在返回的ImageView上。

示例

public class MainActivity extends Activity {private final int[] indexs = {R.drawable.a1,R.drawable.a6,R.drawable.arrow,R.drawable.ic_launcher};private int index = 0;private Button btn_left;private Button btn_right;private ImageSwitcher switcher;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.animation_3);switcher = (ImageSwitcher) findViewById(R.id.switcher);switcher.setFactory(new ViewFactory() {public View makeView() {return new ImageView(MainActivity.this);}});switcher.setInAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));switcher.setOutAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_out));btn_left = (Button)findViewById(R.id.btn_left);btn_right = (Button)findViewById(R.id.btn_right);if(index == 0){btn_left.setClickable(false);}else if(index == indexs.length){btn_right.setClickable(false);}if(indexs.length == 1){btn_left.setClickable(false);btn_right.setClickable(false);}switcher.setImageResource(indexs[index]);}public void left(View v){index--;btn_right.setClickable(true);if(index < 0){btn_left.setClickable(false);return;}else if(index == 0){btn_left.setClickable(false);switcher.setImageResource(indexs[index]);}else{btn_left.setClickable(true);switcher.setImageResource(indexs[index]);}}public void right(View v){index++;btn_left.setClickable(true);if(index > indexs.length-1){btn_right.setClickable(false);return;}else if(index == indexs.length - 1){btn_right.setClickable(false);switcher.setImageResource(indexs[index]);}else{btn_right.setClickable(true);switcher.setImageResource(indexs[index]);}}
}
        布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageSwitcherandroid:layout_weight="1"android:id="@+id/switcher"android:inAnimation=""android:outAnimation=""android:layout_width="match_parent"android:layout_height="0dp"android:background="#ffff00" /><LinearLayoutandroid:layout_gravity="bottom"android:weightSum="2"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><Buttonandroid:layout_weight="1"android:id="@+id/btn_left"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="left"android:text="上一张" /><Buttonandroid:layout_weight="1"android:id="@+id/btn_right"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="right"android:text="下一张" /></LinearLayout></LinearLayout>

ViewSwitcher

功能

        上述的ImageSwitcher只是用于图片的切换。而ViewSwitcher可以用于任何组件的切换。只要在ViewFactory类中的makeView()中返回相应的View即可。而且ImageSwitcher是ViewSwitcher的子类,类似的还有TextSwitcher。

使用

        和ImageSwitcher不同的是:ImageSwitcher只要设置image即可。而ViewSwitcher返回的不一定是一个View,有可能是一个ViewGroup或其子类,因此使用过程如下:
        第一步:通过getNextView()获取下一个要显示的组件,并 对其中的组件进行操作。
        第二步:通过showNext()显示下一张组件,或者showPrevious()显示上一个组件。

示例

private ViewSwitcher vs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);findViewById(R.id.btn).setOnClickListener(new OnClickListener() {public void onClick(View v) {((ImageView) vs.getNextView()).setImageResource(R.drawable.bkg_img_default);vs.showNext();}});vs = (ViewSwitcher) findViewById(R.id.vs);vs.setFactory(new ViewFactory() {public View makeView() {//此时类似于ImageSwitcherreturn new ImageView(MainActivity.this);}});vs.setInAnimation(this, R.anim.test);vs.setOutAnimation(this, R.anim.test_inter);}





这篇关于ImageSwitcher与ViewSwitcher的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987260

相关文章

Android中Gallery和ImageSwitcher的使用

效果如下: 布局文件activity_main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:la

android ViewSwitcher实现视图的轻松切换

以前在使用listview或者gridview这种东西的时候,如果想要添加一个没有内容时的友好提醒,是在该listview或者gridview的相同位置上,添加一个imageview,然后通过对该控件的visibile进行设置成View.visible或者View.gone方法设置,这种虽然也能实现,但是无疑是比较繁琐的,现在我们有了更好的实现方法,那就是使用ViewSwitcher 示例代码如

android控件之ViewSwitcher实现图片切换

布局文件如下  <RelativeLayout         xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         android:layout_width="match_parent"         a

Android:图像切换器imageSwitcher的实例应用

图像切换器(ImageSwitcher),用于实现类似于windows操作系统下的windows照片查看器中的上一张 下一张切换图片的功能,在使用ImageSwitcher时,必须实现ViewSwitcher.ViewFactory接口,并通过makeView()方法来创建显示图片的ImageView。makeView()方法将返回一个显示图片的imageView。再使用图像切换器时,还有一个方法

Gallery和imageSwitcher结合使用浏览图片(简单图片浏览器)

效果如下图,点击小图显示大图: activity_image_switcher_and_gallery.xml中的代码如下: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation=

(简单图片浏览器)imageSwitcher与gallery结合应用

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!        上次讲了如何使用Gallery控件,这次就讲Gallery 与ImageSwitcher的结合使用,本文实现一个简单的浏览图片的功能。先贴出程序运行截图: 除了Gallery可以拖拉切换图片,我在ImageSwitcher控件加入了setOnTouchListener事件实现

ImageSwitcher小例子

效果图如下,点击就会出现下一张: MainActivity.java中的代码如下: package com.bzu.imageswitcher.activity;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import a

ViewSwitcher用法

结合了手势识别 码了一上午有点小收获 问题一:gridview不要再添加布局,否则会报错 问题二:要在gridview中再次添加手势识别,否则只能识别一次 Activity代码 package com.phone.hty.myapplication;import android.content.res.TypedArray;import android.os.Bundle;imp