本文实例讲述了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
*/
@override
public 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程序设计有所帮助。