欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中使用ViewFlipper進行手勢切換實例

 更新時間:2014年10月14日 09:42:28   投稿:shichen2014  
這篇文章主要介紹了Android中使用ViewFlipper進行手勢切換的方法,以實例形式詳細(xì)講述了XML文件的定義及功能函數(shù)的實現(xiàn)過程,需要的朋友可以參考下

本文實例講述了Android中使用ViewFlipper進行手勢切換的方法,分享給大家供大家參考。具體實現(xiàn)步驟如下:

首先在layout的xml文件中定義一個ViewFlipper:

復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?> 
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/viewFlipper" 
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent" 
        > 
         
    <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        > 
         
        <TextView 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            android:background="#FF0000" 
            /> 
             
    </LinearLayout> 
     
    <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        > 
         
        <TextView 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            android:background="#00FF00" 
            /> 
             
    </LinearLayout> 
     
</ViewFlipper>

聲明一個新的GestureDetector,重寫它的onFling()函數(shù),在這個函數(shù)里面判斷手勢,這里為橫向的拖動:

復(fù)制代碼 代碼如下:
public class MyGestureDetector extends SimpleOnGestureListener 

    private static final int SWIPE_MIN_DISTANCE = 120; 
    private static final int SWIPE_MAX_OFF_PATH = 250; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
     
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2,  
                           float velocityX, float velocityY) 
    { 
        try 
        { 
               if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
               { 
                   return false; 
               } 
               if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE &&  
                  Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) 
               { 
                viewFlipper.setInAnimation(slideLeftIn); 
                   viewFlipper.setOutAnimation(slideLeftOut); 
                viewFlipper.showNext(); 
               } 
               else  
                if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&  
                    Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) 
                { 
                    viewFlipper.setInAnimation(slideRightIn); 
                    viewFlipper.setOutAnimation(slideRightOut); 
                    viewFlipper.showPrevious(); 
                } 
           } 
        catch (Exception e) 
        { 
             
           } 
           return false; 
    } 
}

注意在Activity中重寫onTouchEvent()函數(shù):

復(fù)制代碼 代碼如下:
private ViewFlipper viewFlipper; 
 
private Animation slideLeftIn; 
private Animation slideLeftOut; 
private Animation slideRightIn; 
private Animation slideRightOut; 
 
private GestureDetector gestureDetector; 
@Override 
public void onCreate(Bundle savedInstanceState) 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     
    viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper); 
       slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); 
       slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); 
       slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); 
       slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 
        
       gestureDetector = new GestureDetector(new MyGestureDetector()); 
        
       new View.OnTouchListener() 
       { 
           public boolean onTouch(View v, MotionEvent event) 
           { 
               if (gestureDetector.onTouchEvent(event)) 
               { 
                   return true; 
               } 
               return false; 
           } 
       }; 

 
@Override 
public boolean onTouchEvent(MotionEvent event) 

    if (gestureDetector.onTouchEvent(event)) 
    { 
        return true; 
    } 
    else 
    { 
        return false; 
    } 
}

最后,在res文件夾下新建一個anim文件夾,用來存放view之間切換的動畫文件:

1.slide_left_in.xml

復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
        android:fromXDelta="100%p"  
        android:toXDelta="0"  
        android:duration="500" 
        /> 
    <alpha 
        android:fromAlpha="0.0"  
        android:toAlpha="1.0" 
        android:duration="500" 
        /> 
</set>

2.slide_left_out.xml

復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
        android:fromXDelta="0"  
        android:toXDelta="-100%p"  
        android:duration="500" 
        /> 
    <alpha 
        android:fromAlpha="1.0"  
        android:toAlpha="0.0"  
        android:duration="500" 
        /> 
</set>

3.slide_right_in.xml

復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate  
        android:fromXDelta="-100%p"  
        android:toXDelta="0"  
        android:duration="500" 
        /> 
    <alpha 
        android:fromAlpha="0.0"  
        android:toAlpha="1.0" 
        android:duration="500" 
        /> 
</set>

4.slide_right_out.xml

復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate  
        android:fromXDelta="0"  
        android:toXDelta="100%p"  
        android:duration="500" 
        /> 
    <alpha 
        android:fromAlpha="1.0"  
        android:toAlpha="0.0" 
        android:duration="500" 
        /> 
</set>

希望本文所述對大家的Android程序設(shè)計有所幫助

相關(guān)文章

  • Android控件系列之Shape使用方法

    Android控件系列之Shape使用方法

    Android控件系列之Shape使用方法,需要的朋友可以參考一下
    2013-05-05
  • Kotlin擴展函數(shù)超詳細(xì)介紹

    Kotlin擴展函數(shù)超詳細(xì)介紹

    Kotlin?可以為一個不能修改的或來自第三方庫中的類編寫一個新的函數(shù)。?這個新增的函數(shù)就像那個原始類本來就有的函數(shù)一樣,可以用普通的方法調(diào)用,這種機制的函數(shù)稱為擴展函數(shù)
    2022-09-09
  • Flutter進階之實現(xiàn)動畫效果(二)

    Flutter進階之實現(xiàn)動畫效果(二)

    這篇文章主要為大家詳細(xì)介紹了Flutter進階之實現(xiàn)動畫效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android中imageview.ScaleType使用方法詳細(xì)介紹

    Android中imageview.ScaleType使用方法詳細(xì)介紹

    這篇文章主要介紹了Android中imageview.ScaleType使用方法詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • android之自定義Toast使用方法

    android之自定義Toast使用方法

    有時我們的程序使用默認(rèn)的Toast時會和程序的整體風(fēng)格不搭配,這個時候我們就需要自定義Toast,使其與我們的程序更加融合,使用自定義Toast,首先我們需要添加一個布局文件,該布局文件的結(jié)構(gòu)和Activity使用的布局文件結(jié)構(gòu)一致,在該布局文件中我們需設(shè)計我們Toast的布局
    2013-01-01
  • Flutter質(zhì)感設(shè)計之表單輸入

    Flutter質(zhì)感設(shè)計之表單輸入

    這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計之表單輸入,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android開發(fā)之文件操作詳解

    Android開發(fā)之文件操作詳解

    這篇文章主要介紹了Android開發(fā)之文件操作,結(jié)合實例形式分析了Android開發(fā)中文件操作的步驟及布局、功能等實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Android使用Websocket實現(xiàn)聊天室

    Android使用Websocket實現(xiàn)聊天室

    這篇文章主要為大家詳細(xì)介紹了Android使用Websocket實現(xiàn)聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • android電話竊聽器(示例代碼)

    android電話竊聽器(示例代碼)

    本篇文章我將為大家介紹一下android電話竊聽器(示例代碼),需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 詳解Android App中創(chuàng)建ViewPager組件的方法

    詳解Android App中創(chuàng)建ViewPager組件的方法

    這篇文章主要介紹了詳解Android App中創(chuàng)建ViewPager組件的方法,ViewPager最基本的功能就是可以使視圖滑動,需要的朋友可以參考下
    2016-03-03

最新評論