这篇文章主要介绍了Android开发之ViewSwitcher用法,结合实例形式分析了ViewSwitcher的功能、使用方法与相关注意事项,需要的朋友可以参考下
这篇文章主要介绍了Android开发之ViewSwitcher用法,结合实例形式分析了ViewSwitcher的功能、使用方法与相关注意事项,需要的朋友可以参考下
这篇文章主要介绍了Android开发之ViewSwitcher用法,结合实例形式分析了ViewSwitcher的功能、使用方法与相关注意事项,需要的朋友可以参考下
本文实例讲述了android开发之viewswitcher用法。分享给大家供大家参考,具体如下:
android.widget.viewswitcher是viewanimator的子类,用于在两个view之间切换,但每次只能显示一个view。
viewswitcher的addview函数的代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
/** * {@inheritdoc} * * @throws illegalstateexception if this switcher already contains two children */@overridepublic void addview(view child, int index, viewgroup.layoutparams params) { if (getchildcount() >= 2) { throw new illegalstateexception("can't add more than 2 views to a viewswitcher"); } super.addview(child, index, params);} |
可以看出,若view的数量超过两个,会抛出异常:java.lang.illegalstateexception,打印 "can't add more than 2 views to a viewswitcher" 。你可以使用viewswitcher的factory创建view或添加自己创建的view。
下面用一个例子介绍一下viewswitcher的用法。
布局文件:activity_main.xml
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<?xml version="1.0" encoding="utf-8"?><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" tools:context=".mainactivity" > <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <button android:id="@+id/prev" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="previous" /> <button android:id="@+id/next" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="next" /> </linearlayout> <viewswitcher android:id="@+id/viewswitcher" android:layout_width="match_parent" android:layout_height="wrap_content" > <imageview android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="- button 2 -" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="linearlayout 2" /> </linearlayout> </viewswitcher></linearlayout> |
activity的代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package com.example.androidtest;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.viewswitcher;public class myactivity extends activity { button buttonprev, buttonnext; viewswitcher viewswitcher; animation slide_in_left, slide_out_right; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); buttonprev = (button) findviewbyid(r.id.prev); buttonnext = (button) findviewbyid(r.id.next); viewswitcher = (viewswitcher) findviewbyid(r.id.viewswitcher); slide_in_left = animationutils.loadanimation(this, android.r.anim.slide_in_left); slide_out_right = animationutils.loadanimation(this, android.r.anim.slide_out_right); viewswitcher.setinanimation(slide_in_left); viewswitcher.setoutanimation(slide_out_right); buttonprev.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { viewswitcher.showprevious(); } }); buttonnext.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { viewswitcher.shownext(); } }); ; }} |
实现效果图:

使用viewswitcher的setfactory设置切换的view,分为两步。
第一步:获得viewswithcer的实例
|
1
|
switcher = (viewswitcher) findviewbyid(r.id.viewswitcher); |
第二部:实现接口viewfactory
|
1
2
3
4
5
6
7
8
|
switcher.setfactory(new viewfactory(){ @override public view makeview() { return inflater.inflate(r.layout.slidelistview, null); }}); |
希望本文所述对大家android程序设计有所帮助。
发表评论