最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android開發(fā)教程之實現(xiàn)滑動關(guān)閉fragment示例

 更新時間:2014年03月06日 16:04:56   作者:  
這篇文章主要介紹了android實現(xiàn)滑動關(guān)閉fragment示例,需要的朋友可以參考下

主要代碼:(有注釋)

復(fù)制代碼 代碼如下:

package com.example.checkboxtest;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

public class MyView extends ViewGroup {
    View leftView = null;
    View rightView = null;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        View view = new View(context, attrs);
        view.setBackgroundColor(Color.BLACK);
        this.addView(view, 0);
    }

    /**
     * 測量
     */
    @SuppressLint("DrawAllocation")
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (getChildCount() != 2) {
            try {
                // 自定義Exception
                throw new Exception() {
                    @Override
                    public void printStackTrace() {
                        System.err.println("MyView中只能存在一個View");
                        super.printStackTrace();
                    }

                };
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        leftView = getChildAt(0);
        // 設(shè)置leftview的高和寬
        leftView.measure(widthMeasureSpec, heightMeasureSpec);
        rightView = getChildAt(1);
        // 設(shè)置rightview的高和寬
        rightView.measure(widthMeasureSpec, heightMeasureSpec);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

    /**
     * 布局
     */
    @SuppressLint("NewApi")
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        System.out.println(l + "," + t + "," + r + "," + b);
        if (leftView != null & rightView != null) {
            // 設(shè)置leftview的位置,在屏幕右側(cè)(初始不可見)
            leftView.layout(-r, 0, 0, b);
            // 設(shè)置rightView的位置,在屏幕中
            rightView.layout(l, t, r, b);
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    }

    @SuppressLint("NewApi")
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        final float X = event.getX();
        float Y = event.getY();
        switch (event.getAction()) {

        case MotionEvent.ACTION_MOVE:
            System.out.println("X:" + X);
            if (X < 100) {
                scrollTo(0, 0);
            } else if (X > rightView.getMeasuredWidth() - 100) {// 當(dāng)用戶滑動至離右邊緣100時,頁面關(guān)閉
                new Thread(new Runnable() {// 新建線程,滑動關(guān)閉
                            @Override
                            public void run() {
                                for (int i = 0;; i++) {
                                    try {
                                        Thread.sleep(10);// rightView每隔10ms右移3,保證滑動流暢
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }
                                    int len = (int) (X + 3 * i);
                                    // System.out.println("len:" + len);
                                    Message message = new Message();// android中非UI線程不允許直接操作控件,可以將消息發(fā)送至主線程的handler類
                                    if (len >= rightView.getMeasuredWidth()) {
                                        message.what = 1;
                                        handler.sendMessage(message);// 發(fā)送消息
                                                                        // 關(guān)閉View
                                        break;
                                    } else {
                                        message.what = 0; // 發(fā)送消息 自動滑動
                                        handler.sendMessage(message);
                                    }
                                }
                            }
                        }).start();
            } else {
                scrollTo((int) -X, 0);
                // 計算透明度信息
                float alpha = (float) (1.0 - (float) (1.0 / 400) * X);
                // System.out.println("alpha:" + al);
                // 設(shè)置透明度
                leftView.setAlpha(alpha);
            }
            break;
        }
        // 設(shè)置true,消費(fèi)event事件,不在向外傳遞
        return true;
    }

    @SuppressLint("HandlerLeak")
    Handler handler = new Handler() {
        @SuppressLint("NewApi")
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0) {
                scrollBy(-3, 0);// viewgroup向右滑動3
            } else if (msg.what == 1) {
                Toast.makeText(getContext(), "關(guān)閉", 50).show();
                setVisibility(View.GONE);// 設(shè)置viewgroup不可見(隱藏)
            }
        }

    };
}

使用:

復(fù)制代碼 代碼如下:

<com.example.checkboxtest.MyView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <View
            android:id="@+id/rightview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#ff0000" />
    </com.example.checkboxtest.MyView>

要顯示底下的activity界面需要使用Fragment的add方法

復(fù)制代碼 代碼如下:

//新建一個Fragment
Fragment bFragment = new BFragment();
getFragmentManager().beginTransaction().add(R.id.fragment, bFragment).commit();

相關(guān)文章

  • 實現(xiàn)一個Android鎖屏App功能的難點(diǎn)總結(jié)

    實現(xiàn)一個Android鎖屏App功能的難點(diǎn)總結(jié)

    這篇文章主要介紹了實現(xiàn)一個Android鎖屏App功能的難點(diǎn)總結(jié),可以有效的解決鎖屏開發(fā)的問題,有需要的可以參考一下。
    2016-11-11
  • 實例講解Android app開發(fā)中ListView的基本使用及優(yōu)化

    實例講解Android app開發(fā)中ListView的基本使用及優(yōu)化

    這篇文章主要介紹了Android app開發(fā)中ListView的基本使用及優(yōu)化,ListView視圖組件是Android中最常用的組件之一需要的朋友可以參考下
    2016-02-02
  • Android開發(fā)之緩沖dialog對話框創(chuàng)建、使用與封裝操作

    Android開發(fā)之緩沖dialog對話框創(chuàng)建、使用與封裝操作

    這篇文章主要介紹了Android開發(fā)之緩沖dialog對話框創(chuàng)建、使用與封裝操作,結(jié)合具體實例形式分析了Android緩沖dialog對話框的創(chuàng)建、設(shè)置、顯示、關(guān)閉等操作實現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • Android 仿QQ頭像自定義截取功能

    Android 仿QQ頭像自定義截取功能

    在我們的qq聊天工具中,經(jīng)常會使用qq頭像截取功能,基于代碼是怎么實現(xiàn)的呢?下面小編通過本文給大家分享android 仿qq頭像自定義截取功能的思路分析及編碼實現(xiàn)過程,感興趣的朋友一起學(xué)習(xí)吧
    2016-10-10
  • Android教程之開機(jī)流程全面解析

    Android教程之開機(jī)流程全面解析

    這篇文章主要介紹了Android開機(jī)流程,非常全面的分析了Android開機(jī)常見形式、函數(shù)調(diào)用與相關(guān)注意事項,需要的朋友可以參考下
    2016-06-06
  • Kotlin擴(kuò)展函數(shù)超詳細(xì)介紹

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

    Kotlin?可以為一個不能修改的或來自第三方庫中的類編寫一個新的函數(shù)。?這個新增的函數(shù)就像那個原始類本來就有的函數(shù)一樣,可以用普通的方法調(diào)用,這種機(jī)制的函數(shù)稱為擴(kuò)展函數(shù)
    2022-09-09
  • Android通用LoadingView加載框架詳解

    Android通用LoadingView加載框架詳解

    這篇文章主要為大家詳細(xì)介紹了Android通用LoadingView加載框架的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 簡單說說Android中如何使用攝像頭和相冊

    簡單說說Android中如何使用攝像頭和相冊

    本篇文章主要介紹了簡單說說Android中如何使用攝像頭和相冊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android RippleDrawable 水波紋/漣漪效果的實現(xiàn)

    Android RippleDrawable 水波紋/漣漪效果的實現(xiàn)

    這篇文章主要介紹了Android RippleDrawable 水波紋/漣漪效果的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • android實現(xiàn)App活動定時自動跳轉(zhuǎn)效果

    android實現(xiàn)App活動定時自動跳轉(zhuǎn)效果

    本篇文章主要介紹了android實現(xiàn)App活動定時自動跳轉(zhuǎn)效果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論

镶黄旗| 定远县| 金山区| 承德县| 本溪市| 息烽县| 绵竹市| 公安县| 罗源县| 曲靖市| 龙岩市| 北川| 秦安县| 德惠市| 高台县| 满洲里市| 油尖旺区| 同心县| 新建县| 永宁县| 上虞市| 论坛| 石林| 阳谷县| 金秀| 灌南县| 临澧县| 临沧市| 葫芦岛市| 施秉县| 马公市| 阿拉善左旗| 弥勒县| 津市市| 呼玛县| 增城市| 吴川市| 眉山市| 浙江省| 天水市| 噶尔县|