大家好,好久不見,這段時間一直忙來着,也沒上來進行更新,但是我還在想,我應該給大家更新點什麼呢?東西太多了,想更新的東西,我怕有些東西我描述的不清楚,給大家造成干擾,糾結了一段時間後,但是我還是堅定了自己的信念,接着寫,歡迎大家指正裏面的錯誤!
今天講的呢是ViewFlipper 這個容器
想必大家都用過PPT裏面的幻燈片切換,每個圖片的在規定時間內定的切換動作,今天實現的這個就類似幻燈片的切換吧;
這個控件的簡單介紹,大家百度下就知道了,老規矩,乾貨上來,一眼就知道:
首先是佈局文件:activity_flipper.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ViewFlipper
android:id="@+id/vf"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
是不是看佈局就感覺到很簡單呢,在來看看具體的實現部分吧
FlipperActivity.java
public class FlipperActivity extends Activity implements GestureDetector.OnGestureListener {
//聲明ViewFlipper
private ViewFlipper mViewFlipper;
//聲明GestureDetector 手勢
private GestureDetector mGestureDetector;
//聲明所需的圖片
private ImageView mimageView1;
private ImageView mimageView2;
private ImageView mimageView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_flipper);
//創建ViewFlipper 的子視圖
mimageView1 = new ImageView(this);
mimageView2 = new ImageView(this);
mimageView3 = new ImageView(this);
//爲ImageView 添加資源圖片
mimageView1.setImageResource(R.drawable.image1);
mimageView2.setImageResource(R.drawable.image2);
mimageView3.setImageResource(R.drawable.image3);
//創件手勢實例對象
mGestureDetector = new GestureDetector(this);
//初始化ViewFlipper
mViewFlipper = (ViewFlipper) findViewById(R.id.vf);
//創建透明動畫
AlphaAnimation alphaAnimation = new AlphaAnimation(0.3f, 1.0f);
//創建動畫持續時間
alphaAnimation.setDuration(1500);
//給ViewFlipper 添加動畫
mViewFlipper.setAnimation(alphaAnimation);
//爲ViewFilpper 添加子視圖
mViewFlipper.addView(mimageView1, 0);
mViewFlipper.addView(mimageView2, 1);
mViewFlipper.addView(mimageView3, 2);
//長按屏幕,切換子視圖效果
if (mGestureDetector.isLongpressEnabled()) {
//設置子視圖卻換的時間間隔
mViewFlipper.setFlipInterval(5500);
//開始切換ViewFlipper 中的子視圖
mViewFlipper.startFlipping();
}
}
//設置如何使用手指切換ViewFlipper 中的子視圖
@Override
public boolean onFling(MotionEvent e1,
MotionEvent e2,
float velocityX,
float velocityY) {
/**
* 當手指在x軸向右滑動的距離超過150dp的時候,展示ViewFlipper的下一個視圖
*/
if ((e1.getX() - e2.getX()) > 150) {
this.mViewFlipper.setInAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_in));
this.mViewFlipper.setOutAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_out));
this.mViewFlipper.showNext();
return true;
} else if ((e1.getX() - e2.getX()) < -150) {
this.mViewFlipper.setInAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_in));
this.mViewFlipper.setOutAnimation(AnimationUtils
.loadAnimation(this, android.R.anim.fade_out));
this.mViewFlipper.showPrevious();
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
}
行了,這兩段代碼添加進去就可以了,自己找三張圖添加進去就OK了。
這就是今天想要分享的內容,大家有什麼想知道的,我會盡我努力去搞出來,歡迎大家提出你們的建議~