用ViewFlipper與GestureDetector來實現(xiàn)圖片的左右滑動效果。

創(chuàng)新互聯(lián)是網(wǎng)站建設專家,致力于互聯(lián)網(wǎng)品牌建設與網(wǎng)絡營銷,專業(yè)領域包括成都做網(wǎng)站、網(wǎng)站建設、電商網(wǎng)站制作開發(fā)、微信平臺小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設計及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結合了恒基網(wǎng)絡品牌建設經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
首先在布局xml中添加ViewFlipper控件:
<ViewFlipper android:id="@+id/flipper" android:layout_width="match_parent" android:layout_height="match_parent" > </ViewFlipper>
在Activity中實現(xiàn)GestureDetector的OnGestureListener監(jiān)聽:
mGesture = new GestureDetector(this, this);
public boolean onDown(MotionEvent e) {
return false;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return false;
}
public void onLongPress(MotionEvent e) {
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
public void onShowPress(MotionEvent e) {
}
public boolean onSingleTapUp(MotionEvent e) {
return false;
}為ViewFilpper加入View,如圖片、文字等:
mFilpper = (ViewFlipper) findViewById(R.id.flipper);
mFilpper.addView(addImageView(R.drawable.chrysanthemum));
mFilpper.addView(addImageView(R.drawable.desert));
mFilpper.addView(addImageView(R.drawable.ic_launcher));
mFilpper.addView(addImageView(R.drawable.koala));
mFilpper.addView(addImageView(R.drawable.penguins));
mFilpper.addView(addImageView(R.drawable.lighthouse));
mFilpper.addView(addText("你好"));public ImageView addImageView(int resId) {
ImageView p_w_picpath = new ImageView(this);
p_w_picpath.setImageResource(resId);
return p_w_picpath;
}
private View addText(String string) {
TextView textView = new TextView(this);
textView.setText(string);
return textView;
}在onFling()中編寫滑動效果:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.e("onFling", "onFling");
if (e1.getX() - e2.getX() > 120) {
mFilpper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.left_in));
mFilpper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.left_out));
mFilpper.showPrevious();
} else if (e2.getX() - e1.getX() > 120) {
mFilpper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.rigth_in));
mFilpper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.right_out));
mFilpper.showNext();
}
return false;
}其中的left_in.xml如下:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="0" android:toAlpha="1" /> <translate android:duration="1000" android:fromXDelta="100%p" android:toXDelta="0" /> </set>
left_out.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="1" android:toAlpha="0" /> <translate android:duration="1000" android:fromXDelta="0" android:toXDelta="-100%p" /> </set>
right_in.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="0" android:toAlpha="1" /> <translate android:duration="1000" android:fromXDelta="-100%p" android:toXDelta="0" /> </set>
right_out.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="1" android:toAlpha="0" /> <translate android:duration="1000" android:fromXDelta="0" android:toXDelta="100%p" /> </set>
最后還要重寫onTouchEvent()方法在其中調用GestureDetector的onTouchEvent()方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e("onTouchEvent", "onTouchEvent");
return mGesture.onTouchEvent(event);
}
本文標題:Android的ViewFlipper與GestureDet
網(wǎng)頁URL:http://www.chinadenli.net/article32/pesesc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、Google、外貿網(wǎng)站建設、移動網(wǎng)站建設、建站公司、域名注冊
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)