Android ViewFlipper簡單用法解析
ViewFlipper和ViewPager挺像的,都是一個view容器。內(nèi)部可以添加多個view,只是viewpager可以通過左右滑動來切換view,而viewFlipper則沒有這個功能,所以需要在它上面監(jiān)聽手勢。比較方便的是它不用使用適配器就能添加view,所以比較方便。

首先在布局文件中定義這個控件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff">
<ViewFlipper android:id="@+id/ViewFlipper01"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
2.在代碼中找到并且添加view
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
detector = new GestureDetector(this);
flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
flipper.addView(addTextView("page 1"));//添加view到flipper中,這里添加5個textView
flipper.addView(addTextView("page 2"));
flipper.addView(addTextView("page 3"));
flipper.addView(addTextView("page 4"));
flipper.addView(addTextView("page 5"));
}
/**
* @param text
* @return 一個textView對象
*/
private View addTextView(String text) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setTextSize(40);
tv.setTextColor(0xff000000);
tv.setGravity(Gravity.CENTER);
return tv;
}
3.通過touch監(jiān)聽手勢來切換view
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
this.flipper.showNext();//切換到下一個view
return true;
} else if (e1.getX() - e2.getX() < -120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
this.flipper.showPrevious();
return true;
}
return false;
}
下面是Activity的完整代碼:
package com.xu81.testflip;
import android.app.Activity;
import android.app.ActivityManager.RecentTaskInfo;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.OnGestureListener;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
import android.widget.ViewFlipper;
public class TestFlip extends Activity implements OnGestureListener {
private ViewFlipper flipper;
private GestureDetector detector;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
detector = new GestureDetector(this);
flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
flipper.addView(addTextView("page 1"));//添加view到flipper中,這里添加5個textView
flipper.addView(addTextView("page 2"));
flipper.addView(addTextView("page 3"));
flipper.addView(addTextView("page 4"));
flipper.addView(addTextView("page 5"));
}
/**
* @param text
* @return 一個textView對象
*/
private View addTextView(String text) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setTextSize(40);
tv.setTextColor(0xff000000);
tv.setGravity(Gravity.CENTER);
return tv;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.detector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
this.flipper.showNext();//切換到下一個view
return true;
} else if (e1.getX() - e2.getX() < -120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
this.flipper.showPrevious();
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO 自動生成的方法存根
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO 自動生成的方法存根
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO 自動生成的方法存根
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO 自動生成的方法存根
return false;
}
}
動畫文件:
push_left_in.xml
<?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.1" android:toAlpha="1.0"
android:duration="500" />
</set>
push_left_out.xml
<?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.1"
android:duration="500" />
</set>
push_right_in.xml
<?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.1" android:toAlpha="1.0"
android:duration="500" />
</set>
push_right_out.xml
<?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.1"
android:duration="500" />
</set>
源碼下載:http://xiazai.jb51.net/201609/yuanma/AndroidViewFlip(jb51.net).rar
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 解析Android中實現(xiàn)滑動翻頁之ViewFlipper的使用詳解
- Android中ViewFlipper的使用及設(shè)置動畫效果實例詳解
- Android TextSwitcher文本切換器和ViewFlipper使用詳解
- Android ViewFlipper用法實例分析
- Android ViewFlipper翻轉(zhuǎn)視圖使用詳解
- Android使用ViewFlipper實現(xiàn)圖片切換功能
- Android 使用ViewPager實現(xiàn)圖片左右循環(huán)滑動自動播放
- Android自動播放Banner圖片輪播效果
- Android實現(xiàn)自動播放圖片功能
- Android使用自定義屬性實現(xiàn)圖片自動播放滾動的功能
- Android開發(fā)之ViewFlipper自動播放圖片功能實現(xiàn)方法示例
相關(guān)文章
Flutter?Widget?之package?mason實現(xiàn)詳解
這篇文章主要為大家介紹了Flutter?Widget?之package:?mason實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
Android直播系統(tǒng)平臺搭建之圖片實現(xiàn)陰影效果的方法小結(jié)
這篇文章主要介紹了Android直播系統(tǒng)平臺搭建, 圖片實現(xiàn)陰影效果的若干種方法,本文給大家?guī)砣N方法,每種方法通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-08-08
XListView實現(xiàn)網(wǎng)絡(luò)加載圖片和下拉刷新
這篇文章主要為大家詳細介紹了XListView實現(xiàn)網(wǎng)絡(luò)加載圖片和下拉刷新,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11
Android數(shù)據(jù)持久化之讀寫SD卡中內(nèi)容的方法詳解
這篇文章主要介紹了Android數(shù)據(jù)持久化之讀寫SD卡中內(nèi)容的方法,結(jié)合具體實例形式分析了Android持久化操作中針對SD卡進行讀寫操作的相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下2017-05-05
Android使用分類型RecyclerView仿各大商城首頁
這篇文章主要為大家詳細介紹了Android使用分類型的RecyclerView仿各大商城首頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02

