allow controlling the brightness with sliding too
This commit is contained in:
parent
c857c17f50
commit
b0562e7ed1
2 changed files with 75 additions and 0 deletions
|
@ -7,6 +7,7 @@ import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
import android.provider.Settings
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.*
|
import android.view.*
|
||||||
|
@ -51,6 +52,8 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
private var mTouchDownY = 0f
|
private var mTouchDownY = 0f
|
||||||
private var mTouchDownTime = 0L
|
private var mTouchDownTime = 0L
|
||||||
private var mTouchDownVolume = 0
|
private var mTouchDownVolume = 0
|
||||||
|
private var mTouchDownBrightness = -1
|
||||||
|
private var mTempBrightness = 0
|
||||||
private var mLastTouchY = 0f
|
private var mLastTouchY = 0f
|
||||||
|
|
||||||
private var mSlideInfoText = ""
|
private var mSlideInfoText = ""
|
||||||
|
@ -100,6 +103,11 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mView.video_brightness_controller.setOnTouchListener { v, event ->
|
||||||
|
handleBrightnessTouched(event)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
initTimeHolder()
|
initTimeHolder()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,8 +172,48 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun handleBrightnessTouched(event: MotionEvent) {
|
||||||
|
when (event.action) {
|
||||||
|
MotionEvent.ACTION_DOWN -> {
|
||||||
|
mTouchDownX = event.x
|
||||||
|
mTouchDownY = event.y
|
||||||
|
mLastTouchY = event.y
|
||||||
|
mTouchDownTime = System.currentTimeMillis()
|
||||||
|
mSlideInfoText = "${getString(R.string.brightness)}:\n"
|
||||||
|
if (mTouchDownBrightness == -1)
|
||||||
|
mTouchDownBrightness = getCurrentBrightness()
|
||||||
|
}
|
||||||
|
MotionEvent.ACTION_MOVE -> {
|
||||||
|
val diffX = mTouchDownX - event.x
|
||||||
|
val diffY = mTouchDownY - event.y
|
||||||
|
|
||||||
|
if (Math.abs(diffY) > Math.abs(diffX)) {
|
||||||
|
var percent = ((diffY / ViewPagerActivity.screenHeight) * 100).toInt() * 3
|
||||||
|
percent = Math.min(100, Math.max(-100, percent))
|
||||||
|
|
||||||
|
if ((percent == 100 && event.y > mLastTouchY) || (percent == -100 && event.y < mLastTouchY)) {
|
||||||
|
mTouchDownY = event.y
|
||||||
|
mTouchDownBrightness = mTempBrightness
|
||||||
|
}
|
||||||
|
|
||||||
|
brightnessPercentChanged(percent)
|
||||||
|
}
|
||||||
|
mLastTouchY = event.y
|
||||||
|
}
|
||||||
|
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
|
||||||
|
if (System.currentTimeMillis() - mTouchDownTime < CLICK_MAX_DURATION) {
|
||||||
|
mView.video_holder.performClick()
|
||||||
|
}
|
||||||
|
mTouchDownBrightness = mTempBrightness
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mView.video_holder
|
||||||
|
}
|
||||||
|
|
||||||
private fun getCurrentVolume() = context.audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
|
private fun getCurrentVolume() = context.audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||||
|
|
||||||
|
private fun getCurrentBrightness() = Settings.System.getInt(activity.contentResolver, Settings.System.SCREEN_BRIGHTNESS)
|
||||||
|
|
||||||
private fun volumePercentChanged(percent: Int) {
|
private fun volumePercentChanged(percent: Int) {
|
||||||
val stream = AudioManager.STREAM_MUSIC
|
val stream = AudioManager.STREAM_MUSIC
|
||||||
val maxVolume = context.audioManager.getStreamMaxVolume(stream)
|
val maxVolume = context.audioManager.getStreamMaxVolume(stream)
|
||||||
|
@ -186,6 +234,28 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
}, SLIDE_INFO_FADE_DELAY)
|
}, SLIDE_INFO_FADE_DELAY)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun brightnessPercentChanged(percent: Int) {
|
||||||
|
val maxBrightness = 255f
|
||||||
|
var newBrightness = (mTouchDownBrightness + 2.55 * percent).toFloat()
|
||||||
|
newBrightness = Math.min(maxBrightness, Math.max(0f, newBrightness))
|
||||||
|
mTempBrightness = newBrightness.toInt()
|
||||||
|
|
||||||
|
val absolutePercent = ((newBrightness / maxBrightness) * 100).toInt()
|
||||||
|
mView.slide_info.apply {
|
||||||
|
text = "$mSlideInfoText$absolutePercent%"
|
||||||
|
alpha = 1f
|
||||||
|
}
|
||||||
|
|
||||||
|
val attributes = activity.window.attributes
|
||||||
|
attributes.screenBrightness = absolutePercent / 100f
|
||||||
|
activity.window.attributes = attributes
|
||||||
|
|
||||||
|
mSlideInfoFadeHandler.removeCallbacksAndMessages(null)
|
||||||
|
mSlideInfoFadeHandler.postDelayed({
|
||||||
|
mView.slide_info.animate().alpha(0f)
|
||||||
|
}, SLIDE_INFO_FADE_DELAY)
|
||||||
|
}
|
||||||
|
|
||||||
private fun initTimeHolder() {
|
private fun initTimeHolder() {
|
||||||
mTimeHolder = mView.video_time_holder
|
mTimeHolder = mView.video_time_holder
|
||||||
val res = resources
|
val res = resources
|
||||||
|
|
|
@ -19,6 +19,11 @@
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="true"/>
|
android:layout_alignParentRight="true"/>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/video_brightness_controller"
|
||||||
|
android:layout_width="@dimen/video_side_slider_width"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/video_play_outline"
|
android:id="@+id/video_play_outline"
|
||||||
android:layout_width="@dimen/play_outline_size_big"
|
android:layout_width="@dimen/play_outline_size_big"
|
||||||
|
|
Loading…
Reference in a new issue