Android开发之ViewSwitcher用法实例
程序员文章站
2024-02-19 22:46:16
本文实例讲述了android开发之viewswitcher用法。分享给大家供大家参考,具体如下:
android.widget.viewswitcher是viewanim...
本文实例讲述了android开发之viewswitcher用法。分享给大家供大家参考,具体如下:
android.widget.viewswitcher是viewanimator的子类,用于在两个view之间切换,但每次只能显示一个view。
viewswitcher的addview函数的代码如下:
/** * {@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
<?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的代码:
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的实例
switcher = (viewswitcher) findviewbyid(r.id.viewswitcher);
第二部:实现接口viewfactory
switcher.setfactory(new viewfactory() { @override public view makeview() { return inflater.inflate(r.layout.slidelistview, null); } });
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android控件用法总结》、《android短信与电话操作技巧汇总》及《android多媒体操作技巧汇总(音频,视频,录音等)》
希望本文所述对大家android程序设计有所帮助。