Android視頻播放器螢幕左側邊隨手指上下滑動亮度調節變暗變亮原理實現(2):後續改進

來源:互聯網
上載者:User

標籤:min   位移   視頻播放器   from   滑動   XML   布局檔案   連結地址   sni   

??

Android視頻播放器螢幕左側邊隨手指上下滑動亮度調節變暗變亮原理實現(2):後續改進

附錄文章1雖然實現了在螢幕左半邊隨手指上滑/下滑實現明暗度的調節,但是有一個不完美的地方:當手指在螢幕左半邊水平左滑/右滑時候,也一樣會觸發明暗度的調節。這是不完美的,假設當前的那個view是一個視頻播放器view,如果使用者的手指在水平方向左滑/右滑,顯然,意圖是快進/快退,而不是調整明暗度,所以需要對附錄文章1的代碼改進,實現正確的邏輯。
需要改進的地方集中在dispatchTouchEvent,改進思路:如果使用者手指在左半邊移動的水平(x座標軸)方向和垂直(y座標軸)方向的位移,只有當在垂直(y座標軸)的位移大於水平(x座標軸)方向時候,才認為這是一次有效明暗度調節操作,否則判定是水平方向普通位移,然後將此事件不要消費掉,繼續往下傳遞該事件。
改進後的附錄文章1上層Java代碼:

package zhangphil.app;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.widget.TextView;public class MainActivity extends Activity {    private float startY = 0;//手指按下時的Y座標    private float startX = 0;//手指按下時的Y座標    private TextView brightnessTextView;    private View mVideoView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mVideoView = LayoutInflater.from(this).inflate(R.layout.activity_main, null);        setContentView(mVideoView);        brightnessTextView = (TextView) mVideoView.findViewById(R.id.text);    }    /*    * 設定螢幕亮度    * 0 最暗    * 1 最亮    */    public void setBrightness(float brightness) {        WindowManager.LayoutParams lp = getWindow().getAttributes();        lp.screenBrightness = lp.screenBrightness + brightness / 255.0f;        if (lp.screenBrightness > 1) {            lp.screenBrightness = 1;        } else if (lp.screenBrightness < 0.1) {            lp.screenBrightness = (float) 0.1;        }        getWindow().setAttributes(lp);        float sb = lp.screenBrightness;        brightnessTextView.setText((int) Math.ceil(sb * 100) + "%");    }    @Override    public boolean onTouchEvent(MotionEvent event) {        int screenWidth = mVideoView.getWidth();        switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                startX = event.getX();                startY = event.getY();                break;            case MotionEvent.ACTION_MOVE:                float endX = event.getX();                float endY = event.getY();                float distanceY = startY - endY;                if (startX > screenWidth / 2) {                    //右邊                    //在這裡處理音量                } else {                    //這段代碼是為了修複一個bug                    //bug:當手指在螢幕左邊水平移動時候本來應該是快進快退,但是卻變成敏感度調整                    //增加這一些代碼,可以實現在螢幕左邊水平移動時候是快進快退邏輯,而不是調整明暗度                    // by phil                    float distanceX = Math.abs(endX - startX);                    if (distanceX > Math.abs(distanceY)) {                        //Log.d("位移",distanceX+","+distanceY);                        return false;                    }                    //螢幕左半部分上滑,亮度變大,下滑,亮度變小                    final double FLING_MIN_DISTANCE = 1;                    final double FLING_MIN_VELOCITY = 1;                    if (distanceY > FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {                        setBrightness(10);                    }                    if (distanceY < FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {                        setBrightness(-10);                    }                }                break;        }        return super.onTouchEvent(event);    }}


布局檔案:

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@mipmap/ic_launcher">    <TextView        android:id="@+id/text"        android:layout_width="150dp"        android:layout_height="50dp"        android:layout_gravity="center"        android:background="@android:color/holo_orange_light"        android:gravity="center"        android:textColor="@android:color/white" /></FrameLayout>


致謝:
馮祖學對本文亦有貢獻!


附錄:
1,《Android視頻播放器螢幕左側邊隨手指上下滑動亮度調節變暗變亮原理實現》連結地址:http://blog.csdn.net/zhangphil/article/details/56831156

Android視頻播放器螢幕左側邊隨手指上下滑動亮度調節變暗變亮原理實現(2):後續改進

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.