`
zhengdl126
  • 浏览: 2509731 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

ViewSwitcher:在两个视图间转换时显示动画

 
阅读更多

 ViewSwitcher 的作用简单来说就是:在两个视图间转换时显示动画

它的两个子类应该很熟悉,ImageSwitcher:转换图片时增加动画效果;TextSwitcher:转换文字时增加动画效果;其实例见apidemos中ImageSwitcher实例和TextSwitcher实例

但不要忽略ViewSwicher,在一些场合还是很有用的

在android里视图切换是一个很常见的需求,比如说加载view和后台背景,当后台加载数据时,loding view显示,数据View隐藏,加载完成,反向此过程。使用ViewSwicher提供了简单的逻辑,产生更可读的代码。

 

 

 

 

 

 ================ 实例:异步获取网络信息时候的等待切换效果

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/listcolor"
    android:orientation="vertical" >
   
    <include layout="@layout/header_bar"/>
   
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ViewSwitcher
            android:id="@+id/viewswitcher_news_top"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center" >
        </ViewSwitcher>

        <ListView
            android:id="@+id/favorite_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:cacheColorHint="@color/transparent"
            android:divider="@drawable/tip_line" />
    </FrameLayout>

</LinearLayout>

 

 

 

 

 

 

 

private ViewSwitcher viewSwitcher;

...

viewSwitcher = (ViewSwitcher) findViewById(R.id.viewswitcher_news_top);
        viewSwitcher.addView(getLayoutInflater().inflate(
                R.layout.layout_progress_page, null));
...

private void requestData() {
        viewSwitcher.setVisibility(View.VISIBLE);
        viewSwitcher.showNext();
        Thread t = new Thread() {
...

Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (msg.what == 1) {
                mAdapter = new ItemAdapter();
                mList.setAdapter(mAdapter);
                mList.setOnItemClickListener(listener);
            }
            viewSwitcher.setVisibility(View.INVISIBLE);
        };
    };

 

 =================== 可见状态

 

View缺省为可见的,在应用可以通过setVisibility 修改View的可见性,View可用性可以有如下三种状态:

  • View.VISIBLE View可见
  • View.INVISIBLE View不可以见,但仍然占据可见时的大小和位置。
  • View.GONE View不可见,且不占据空间。

本例使用三个按钮来修改View B的可见性:

 


OnClickListener mVisibleListener = new OnClickListener() {
 public void onClick(View v) {
 mVictim.setVisibility(View.VISIBLE);
 }
};

OnClickListener mInvisibleListener = new OnClickListener() {
 public void onClick(View v) {
 mVictim.setVisibility(View.INVISIBLE);
 }
};

OnClickListener mGoneListener = new OnClickListener() {
 public void onClick(View v) {
 mVictim.setVisibility(View.GONE);
 }
};

 

 



 

 

 

 
 
 
  • 大小: 38.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics