Android三種左右滑動效果 手勢識別左右滑動效果左右滑動指引效果漸顯按鈕的左右滑動效果

來源:互聯網
上載者:User
手勢識別

1.onCreate中添加GestureDetector mGestureDetector;

 //監聽手勢事件

mGestureDetector = new GestureDetector(this, onGestureListener);

2.//實現處理事件

OnGestureListener onGestureListener = new OnGestureListener() {

 //添加未實現的方法

};

 3.重寫onTouch事件

//交由手勢探測介面處理觸摸事件

public boolean onTouchEvent(MotionEvent event) {

return mGestureDetector.onTouchEvent(event);

}

左右滑動效果

1、在xml中定義ViewFlipper控制項;

2、重寫onTouchEvent方法,用於捕獲Touch事件

View Code

3、寫push_left_in.xml、push_left_out.xml、push_right_in.xml、push_right_out.xml檔案,用於滑動時的效果顯現;

4、在Activity中定義OnGestureListener,重寫onFling方法,根據e1、e2的座標差判斷左右滑動,同時在裡面寫滑動的效果。

View Code

@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();            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;    }

工程下載:GuideViewTest.rar

來自:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html

左右滑動指引效果

1、加入android-support-v4.jar,關於android-support-v4.jar的詳細資料,大家可以訪問google官方網站:http://developer.android.com/sdk/compatibility-library.html;

2、XML中,用FrameLayout完成布局,放入ViewPager和指引表徵圖

View Code

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <include layout="@layout/item_header" />        <android.support.v4.view.ViewPager            android:id="@+id/guidePages"            android:layout_width="fill_parent"            android:layout_height="wrap_content" />    </LinearLayout>    <!-- 指引表徵圖 -->    <LinearLayout        android:id="@+id/viewGroup"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_gravity="bottom"        android:layout_marginBottom="40dp"        android:gravity="center_horizontal"        android:orientation="horizontal" >    </LinearLayout></FrameLayout>

3、將頁面配置加入View的列表中,有幾個布局頁面就有幾個圓點圖片,通過for迴圈設定圓點圖片的布局;

View Code

//添加到View的List中LayoutInflater inflater = getLayoutInflater();pageViews = new ArrayList<View>();pageViews.add(inflater.inflate(R.layout.item05, null));pageViews.add(inflater.inflate(R.layout.item06, null));pageViews.add(inflater.inflate(R.layout.item01, null));pageViews.add(inflater.inflate(R.layout.item02, null));pageViews.add(inflater.inflate(R.layout.item03, null));pageViews.add(inflater.inflate(R.layout.item04, null));// 有幾個布局頁面就有幾個圓點圖片imageViews = new ImageView[pageViews.size()];// 通過for迴圈設定圓點圖片的布局for (int i = 0; i < pageViews.size(); i++) {    imageView = new ImageView(GuideViewTestActivity.this);    imageView.setLayoutParams(new LayoutParams(20, 20));    imageView.setPadding(20, 0, 20, 0);    imageViews[i] = imageView;    if (i == 0) {      // 預設選中第一張圖片      imageViews[i].setBackgroundResource(R.drawable.page_indicator_focused);    } else{      imageViews[i].setBackgroundResource(R.drawable.page_indicator);    }    group.addView(imageViews[i]);}

4、資料配接器和頁面切換事件監聽器

5、在指引頁面變更事件監聽器(GuidePageChangeListener)中要確保在切換頁面時下面的圓點圖片也跟著改變

View Code

@Override  public void onPageSelected(int arg0) {        for (int i = 0; i < imageViews.length; i++) {             imageViews[arg0].setBackgroundResource(R.drawable.page_indicator_focused);                           if (arg0 != i) {                  imageViews[i].setBackgroundResource(R.drawable.page_indicator);             }         }}

工程下載:MyAndroidFlip.rar

來自:http://www.cnblogs.com/hanyonglu/archive/2012/04/07/2435589.html

漸顯按鈕的左右滑動效果

1、XML中,定義ViewFlipper控制項,在裡面加入多個頁面配置,也可以用代碼ViewFlipper的addView方法;

2、寫push_left_in.xml、push_left_out.xml、push_right_in.xml、push_right_out.xml檔案;

3、加入許可權

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

4、在Activity中,初始化左右懸浮按鈕,建立左右按鈕,並設定監聽事件(替換圖片);

View Code

/**     * 初始化懸浮按鈕     */    private void initImageButtonView() {        // 擷取WindowManager        wm = (WindowManager) getApplicationContext().getSystemService("window");        // 設定LayoutParams相關參數        wmParams = new WindowManager.LayoutParams();        // 設定window type        wmParams.type = LayoutParams.TYPE_PHONE;        // 設定圖片格式,效果為背景透明        wmParams.format = PixelFormat.RGBA_8888;        // 設定Window flag參數        wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL                | LayoutParams.FLAG_NOT_FOCUSABLE;        // 設定x、y初始值        wmParams.x = 0;        wmParams.y = 0;        // 設定視窗長寬資料        wmParams.width = 50;        wmParams.height = 50;        // 建立左右按鈕        createLeftButtonView();        createRightButtonView();    }

5、重寫onTouchEvent事件,用於觸發顯示和隱藏懸浮按鈕事件(MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP);

6、利用線程,控制懸浮按鈕的透明度(Alpha和invalidate)

工程下載:MyPageFliper.rar

來自:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.