Android中 視頻屏幕左半部分上下滑動改變亮度右半部分上下滑動改變聲音
說明:
實(shí)現(xiàn)功能:
(1)屏幕右半部分上滑,聲音變大,下滑,聲音變小 屏幕左半部分上滑,亮度變大,下滑,亮度變小
(2)如果亮度>1或者小于0.2時,手機(jī)震動
private float startY;//記錄手指按下時的Y坐標(biāo)
private float startX;//記錄手指按下時的Y坐標(biāo)
private int downVol;//記錄手指按下時的音量
private Vibrator vibrator;//手機(jī)震動器
//不要忘記震動權(quán)限<uses-permission android:name="android.permission.VIBRATE" />
/*
* 設(shè)置屏幕亮度 lp = 0 全暗 ,lp= -1,根據(jù)系統(tǒng)設(shè)置, lp = 1; 最亮
*/
public void setBrightness(float brightness) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
// if (lp.screenBrightness <= 0.1) {
// return;
// }
lp.screenBrightness = lp.screenBrightness + brightness / 255.0f;
if (lp.screenBrightness > 1) {
lp.screenBrightness = 1;
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = { 10, 200 }; // OFF/ON/OFF/ON... 關(guān)閉10秒震動200毫秒,不停切換
vibrator.vibrate(pattern, -1);
} else if (lp.screenBrightness < 0.2) {
lp.screenBrightness = (float) 0.2;
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = { 10, 200 }; // OFF/ON/OFF/ON...
vibrator.vibrate(pattern, -1);
}
getWindow().setAttributes(lp);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//把事件傳遞給手勢識別器(注:對事件只進(jìn)行了解析處理,沒有攔截,解析成手勢識別的單擊、雙擊、長按)
detector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN :
startY=event.getY();
startX=event.getX();
downVol=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
handler.removeMessages(HIDE_CONTROL);
break;
case MotionEvent.ACTION_MOVE :
float endY=event.getY();
float distanceY=startY-endY;
if(startX>screenWidth/2){
//屏幕右半部分上滑,聲音變大,下滑,聲音變小
int touchRang=Math.min(screenWidth,screenHeight);
//int curvol= (int) (downVol+(distance/screenHeight)*maxVolume);
int curvol= (int) (downVol+(distanceY/touchRang)*maxVolume);//考慮到橫豎屏切換的問題
int volume=Math.min(Math.max(0,curvol),maxVolume);
updateVolume(volume);
}else{
//屏幕左半部分上滑,亮度變大,下滑,亮度變小
final double FLING_MIN_DISTANCE = 0.5;
final double FLING_MIN_VELOCITY = 0.5;
if (distanceY > FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {
setBrightness(20);
}
if (distanceY < FLING_MIN_DISTANCE
&& Math.abs(distanceY) > FLING_MIN_VELOCITY) {
setBrightness(-20);
}
}
break;
case MotionEvent.ACTION_UP :
handler.sendEmptyMessageDelayed(HIDE_CONTROL,5000);
break;
}
return super.onTouchEvent(event);
}
以上所述是小編給大家介紹的Android中 視頻屏幕左半部分上下滑動改變亮度右半部分上下滑動改變聲音 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android 中RecyclerView通用適配器的實(shí)現(xiàn)
這篇文章主要介紹了Android 中RecyclerView通用適配器的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-03-03
基于barcodescanner實(shí)現(xiàn)Android二維碼掃描功能
這篇文章主要為大家詳細(xì)介紹了基于barcodescanner實(shí)現(xiàn)Android二維碼掃描功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
android組件SwipeRefreshLayout下拉小球式刷新效果
這篇文章主要為大家詳細(xì)介紹了android組件SwipeRefreshLayout下拉小球式刷新效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Android開發(fā)之CheckBox的簡單使用與監(jiān)聽功能示例
這篇文章主要介紹了Android開發(fā)之CheckBox的簡單使用與監(jiān)聽功能,結(jié)合簡單實(shí)例形式分析了Android使用CheckBox控件的布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
Android開發(fā)調(diào)用WebService的方法示例
這篇文章主要介紹了Android開發(fā)調(diào)用WebService的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android調(diào)用WebService的原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-10-10
SurfaceView開發(fā)[捉小豬]手機(jī)游戲 (二)
這篇文章主要介紹了用SurfaceView開發(fā)[捉小豬]手機(jī)游戲 (二)本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Android Jetpack庫剖析之Lifecycle組件篇
本章也是帶來了Jetpack中我認(rèn)為最重要的架構(gòu)組件Lifecycle的原理探索,至于為什么覺得它是最重要是因?yàn)橄馰iewModel,LiveData這些組件也依賴于Lifecycle來感知宿主的生命周期,那么本章我們帶著幾個問題來探索一下這個組件2022-07-07
基于Flutter實(shí)現(xiàn)風(fēng)車加載組件的制作
Flutter官方提供了諸如 CircularProgressIndicator和 LinearProgressIndicator兩種常見的加載指示組件,但是說實(shí)話,實(shí)在太普通,所以本文將用Flutter自定義一個風(fēng)車加載組件,需要的可以參考一下2022-03-03

