Android视频播放器屏幕左侧边随手指上下滑动亮度调节变暗变亮原理实现

来源:互联网 发布:普莱斯眼镜怎么样 知乎 编辑:程序博客网 时间:2024/06/06 06:29
Android视频播放器屏幕左侧边随手指上下滑动亮度调节变暗变亮原理实现

原文地址:点击打开链接


Java代码:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package zhangphil.app;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.LayoutInflater;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8. import android.view.WindowManager;  
  9. import android.widget.TextView;  
  10.   
  11. public class MainActivity extends Activity {  
  12.     private float startY = 0;//手指按下时的Y坐标  
  13.     private float startX = 0;//手指按下时的Y坐标  
  14.   
  15.     private TextView brightnessTextView;  
  16.     private View mVideoView;  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         mVideoView = LayoutInflater.from(this).inflate(R.layout.activity_main, null);  
  22.         setContentView(mVideoView);  
  23.         brightnessTextView = (TextView) mVideoView.findViewById(R.id.text);  
  24.     }  
  25.   
  26.   
  27.     /* 
  28.     * 设置屏幕亮度 
  29.     * 0 最暗 
  30.     * 1 最亮 
  31.     */  
  32.     public void setBrightness(float brightness) {  
  33.         WindowManager.LayoutParams lp = getWindow().getAttributes();  
  34.         lp.screenBrightness = lp.screenBrightness + brightness / 255.0f;  
  35.         if (lp.screenBrightness > 1) {  
  36.             lp.screenBrightness = 1;  
  37.         } else if (lp.screenBrightness < 0.1) {  
  38.             lp.screenBrightness = (float0.1;  
  39.         }  
  40.         getWindow().setAttributes(lp);  
  41.   
  42.         float sb = lp.screenBrightness;  
  43.         brightnessTextView.setText((int) Math.ceil(sb * 100) + "%");  
  44.     }  
  45.   
  46.     @Override  
  47.     public boolean onTouchEvent(MotionEvent event) {  
  48.         int screenWidth = mVideoView.getWidth();  
  49.   
  50.         switch (event.getAction()) {  
  51.             case MotionEvent.ACTION_DOWN:  
  52.                 startX = event.getX();  
  53.                 startY = event.getY();  
  54.                 break;  
  55.   
  56.             case MotionEvent.ACTION_MOVE:  
  57.                 float endY = event.getY();  
  58.                 float distanceY = startY - endY;  
  59.                 if (startX > screenWidth / 2) {  
  60.                     //右边  
  61.                     //在这里处理音量  
  62.                 } else {  
  63.                     //屏幕左半部分上滑,亮度变大,下滑,亮度变小  
  64.   
  65.                     final double FLING_MIN_DISTANCE = 0.5;  
  66.                     final double FLING_MIN_VELOCITY = 0.5;  
  67.                     if (distanceY > FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {  
  68.                         setBrightness(10);  
  69.                     }  
  70.                     if (distanceY < FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {  
  71.                         setBrightness(-10);  
  72.                     }  
  73.                 }  
  74.                 break;  
  75.         }  
  76.   
  77.         return super.onTouchEvent(event);  
  78.     }  
  79. }  




activity_main.xml布局文件:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/activity_main"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:background="@mipmap/ic_launcher">  
  7.   
  8.     <TextView  
  9.         android:id="@+id/text"  
  10.         android:layout_width="150dp"  
  11.         android:layout_height="50dp"  
  12.         android:layout_gravity="center"  
  13.         android:background="@android:color/holo_orange_light"  
  14.         android:gravity="center"  
  15.         android:textColor="@android:color/white" />  
  16. </FrameLayout>  
0 0