adding a play/pause button at the bottom
This commit is contained in:
parent
7e7cbf43de
commit
683f1edba0
|
@ -8,7 +8,6 @@ import android.os.Handler
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.Window
|
import android.view.Window
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.view.animation.AnimationUtils
|
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import com.google.vr.sdk.widgets.video.VrVideoEventListener
|
import com.google.vr.sdk.widgets.video.VrVideoEventListener
|
||||||
|
@ -21,10 +20,8 @@ import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_STORAGE
|
||||||
import com.simplemobiletools.commons.helpers.isPiePlus
|
import com.simplemobiletools.commons.helpers.isPiePlus
|
||||||
import com.simplemobiletools.gallery.pro.R
|
import com.simplemobiletools.gallery.pro.R
|
||||||
import com.simplemobiletools.gallery.pro.extensions.*
|
import com.simplemobiletools.gallery.pro.extensions.*
|
||||||
import com.simplemobiletools.gallery.pro.helpers.HIDE_PLAY_PAUSE_DELAY
|
|
||||||
import com.simplemobiletools.gallery.pro.helpers.MIN_SKIP_LENGTH
|
import com.simplemobiletools.gallery.pro.helpers.MIN_SKIP_LENGTH
|
||||||
import com.simplemobiletools.gallery.pro.helpers.PATH
|
import com.simplemobiletools.gallery.pro.helpers.PATH
|
||||||
import com.simplemobiletools.gallery.pro.helpers.PLAY_PAUSE_VISIBLE_ALPHA
|
|
||||||
import kotlinx.android.synthetic.main.activity_panorama_video.*
|
import kotlinx.android.synthetic.main.activity_panorama_video.*
|
||||||
import kotlinx.android.synthetic.main.bottom_video_time_holder.*
|
import kotlinx.android.synthetic.main.bottom_video_time_holder.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
@ -41,7 +38,6 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
private var mDuration = 0
|
private var mDuration = 0
|
||||||
private var mCurrTime = 0
|
private var mCurrTime = 0
|
||||||
|
|
||||||
private var mHidePlayPauseHandler = Handler()
|
|
||||||
private var mTimerHandler = Handler()
|
private var mTimerHandler = Handler()
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -56,18 +52,6 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
|
||||||
}
|
}
|
||||||
|
|
||||||
setupButtons()
|
|
||||||
|
|
||||||
cardboard.setOnClickListener {
|
|
||||||
vr_video_view.displayMode = CARDBOARD_DISPLAY_MODE
|
|
||||||
}
|
|
||||||
|
|
||||||
explore.setOnClickListener {
|
|
||||||
mIsExploreEnabled = !mIsExploreEnabled
|
|
||||||
vr_video_view.setPureTouchTracking(mIsExploreEnabled)
|
|
||||||
explore.setImageResource(if (mIsExploreEnabled) R.drawable.ic_explore else R.drawable.ic_explore_off)
|
|
||||||
}
|
|
||||||
|
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE) {
|
handlePermission(PERMISSION_WRITE_STORAGE) {
|
||||||
if (it) {
|
if (it) {
|
||||||
checkIntent()
|
checkIntent()
|
||||||
|
@ -102,7 +86,6 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isChangingConfigurations) {
|
if (!isChangingConfigurations) {
|
||||||
mHidePlayPauseHandler.removeCallbacksAndMessages(null)
|
|
||||||
mTimerHandler.removeCallbacksAndMessages(null)
|
mTimerHandler.removeCallbacksAndMessages(null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,6 +98,7 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupButtons()
|
||||||
intent.removeExtra(PATH)
|
intent.removeExtra(PATH)
|
||||||
|
|
||||||
video_curr_time.setOnClickListener { skip(false) }
|
video_curr_time.setOnClickListener { skip(false) }
|
||||||
|
@ -164,7 +148,7 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
video_play_outline.setOnClickListener {
|
video_toggle_play_pause.setOnClickListener {
|
||||||
togglePlayPause()
|
togglePlayPause()
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
@ -205,18 +189,15 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
|
|
||||||
private fun togglePlayPause() {
|
private fun togglePlayPause() {
|
||||||
mIsPlaying = !mIsPlaying
|
mIsPlaying = !mIsPlaying
|
||||||
video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA
|
|
||||||
mHidePlayPauseHandler.removeCallbacksAndMessages(null)
|
|
||||||
if (mIsPlaying) {
|
if (mIsPlaying) {
|
||||||
playVideo()
|
playVideo()
|
||||||
} else {
|
} else {
|
||||||
pauseVideo()
|
pauseVideo()
|
||||||
}
|
}
|
||||||
schedulePlayPauseFadeOut()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun playVideo() {
|
private fun playVideo() {
|
||||||
video_play_outline.setImageResource(R.drawable.ic_pause)
|
video_toggle_play_pause.setImageResource(R.drawable.ic_pause_outline)
|
||||||
if (mCurrTime == mDuration) {
|
if (mCurrTime == mDuration) {
|
||||||
setVideoProgress(0)
|
setVideoProgress(0)
|
||||||
mPlayOnReady = true
|
mPlayOnReady = true
|
||||||
|
@ -229,7 +210,7 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
|
|
||||||
private fun pauseVideo() {
|
private fun pauseVideo() {
|
||||||
vr_video_view.pauseVideo()
|
vr_video_view.pauseVideo()
|
||||||
video_play_outline.setImageResource(R.drawable.ic_play)
|
video_toggle_play_pause.setImageResource(R.drawable.ic_play_outline)
|
||||||
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,55 +227,57 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
video_seekbar.progress = video_seekbar.max
|
video_seekbar.progress = video_seekbar.max
|
||||||
video_curr_time.text = mDuration.getFormattedDuration()
|
video_curr_time.text = mDuration.getFormattedDuration()
|
||||||
pauseVideo()
|
pauseVideo()
|
||||||
video_play_outline.alpha = PLAY_PAUSE_VISIBLE_ALPHA
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun schedulePlayPauseFadeOut() {
|
|
||||||
mHidePlayPauseHandler.removeCallbacksAndMessages(null)
|
|
||||||
mHidePlayPauseHandler.postDelayed({
|
|
||||||
video_play_outline.animate().alpha(0f).start()
|
|
||||||
}, HIDE_PLAY_PAUSE_DELAY)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupButtons() {
|
private fun setupButtons() {
|
||||||
val navBarHeight = navigationBarHeight
|
var right = 0
|
||||||
video_time_holder.apply {
|
var bottom = 0
|
||||||
(layoutParams as RelativeLayout.LayoutParams).bottomMargin = navBarHeight
|
|
||||||
setPadding(paddingLeft, paddingTop, navigationBarWidth, paddingBottom)
|
if (hasNavBar()) {
|
||||||
|
if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||||
|
bottom += navigationBarHeight
|
||||||
|
} else {
|
||||||
|
right += navigationBarWidth
|
||||||
|
bottom += navigationBarHeight
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
video_time_holder.setPadding(0, 0, right, bottom)
|
||||||
video_time_holder.onGlobalLayout {
|
video_time_holder.onGlobalLayout {
|
||||||
(explore.layoutParams as RelativeLayout.LayoutParams).bottomMargin = navBarHeight + video_time_holder.height
|
val newBottomMargin = video_time_holder.height - resources.getDimension(R.dimen.video_player_play_pause_size).toInt() - resources.getDimension(R.dimen.activity_margin).toInt()
|
||||||
|
(explore.layoutParams as RelativeLayout.LayoutParams).bottomMargin = newBottomMargin
|
||||||
|
|
||||||
(cardboard.layoutParams as RelativeLayout.LayoutParams).apply {
|
(cardboard.layoutParams as RelativeLayout.LayoutParams).apply {
|
||||||
bottomMargin = navBarHeight + video_time_holder.height
|
bottomMargin = newBottomMargin
|
||||||
rightMargin = navigationBarWidth
|
rightMargin = navigationBarWidth
|
||||||
}
|
}
|
||||||
vr_view_gradient_background.layoutParams.height = navBarHeight + video_time_holder.height + explore.height
|
|
||||||
explore.requestLayout()
|
explore.requestLayout()
|
||||||
}
|
}
|
||||||
|
video_toggle_play_pause.setImageResource(R.drawable.ic_play_outline)
|
||||||
|
|
||||||
|
cardboard.setOnClickListener {
|
||||||
|
vr_video_view.displayMode = CARDBOARD_DISPLAY_MODE
|
||||||
|
}
|
||||||
|
|
||||||
|
explore.setOnClickListener {
|
||||||
|
mIsExploreEnabled = !mIsExploreEnabled
|
||||||
|
vr_video_view.setPureTouchTracking(mIsExploreEnabled)
|
||||||
|
explore.setImageResource(if (mIsExploreEnabled) R.drawable.ic_explore else R.drawable.ic_explore_off)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun toggleButtonVisibility() {
|
private fun toggleButtonVisibility() {
|
||||||
val newAlpha = if (mIsFullscreen) 0f else 1f
|
val newAlpha = if (mIsFullscreen) 0f else 1f
|
||||||
arrayOf(cardboard, explore, vr_view_gradient_background).forEach {
|
arrayOf(cardboard, explore).forEach {
|
||||||
it.animate().alpha(newAlpha)
|
it.animate().alpha(newAlpha)
|
||||||
|
}
|
||||||
|
|
||||||
|
arrayOf(cardboard, explore, video_toggle_play_pause, video_curr_time, video_duration).forEach {
|
||||||
it.isClickable = !mIsFullscreen
|
it.isClickable = !mIsFullscreen
|
||||||
}
|
}
|
||||||
|
|
||||||
var anim = android.R.anim.fade_in
|
video_seekbar.setOnSeekBarChangeListener(if (mIsFullscreen) null else this)
|
||||||
if (mIsFullscreen) {
|
video_time_holder.animate().alpha(newAlpha).start()
|
||||||
anim = android.R.anim.fade_out
|
|
||||||
video_seekbar.setOnSeekBarChangeListener(null)
|
|
||||||
} else {
|
|
||||||
video_seekbar.setOnSeekBarChangeListener(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
AnimationUtils.loadAnimation(this, anim).apply {
|
|
||||||
duration = 150
|
|
||||||
fillAfter = true
|
|
||||||
video_time_holder.startAnimation(this)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleClick() {
|
private fun handleClick() {
|
||||||
|
@ -338,6 +321,5 @@ open class PanoramaVideoActivity : SimpleActivity(), SeekBar.OnSeekBarChangeList
|
||||||
mIsPlaying = true
|
mIsPlaying = true
|
||||||
playVideo()
|
playVideo()
|
||||||
mIsDragged = false
|
mIsDragged = false
|
||||||
schedulePlayPauseFadeOut()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,6 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
|
||||||
supportActionBar?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
supportActionBar?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||||
window.statusBarColor = Color.TRANSPARENT
|
window.statusBarColor = Color.TRANSPARENT
|
||||||
window.navigationBarColor = Color.TRANSPARENT
|
window.navigationBarColor = Color.TRANSPARENT
|
||||||
video_time_holder.background = resources.getDrawable(R.drawable.gradient_background)
|
|
||||||
if (config.blackBackground) {
|
if (config.blackBackground) {
|
||||||
video_player_holder.background = ColorDrawable(Color.BLACK)
|
video_player_holder.background = ColorDrawable(Color.BLACK)
|
||||||
}
|
}
|
||||||
|
@ -247,6 +246,7 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun playVideo() {
|
private fun playVideo() {
|
||||||
|
video_toggle_play_pause.setImageResource(R.drawable.ic_pause_outline)
|
||||||
if (mExoPlayer == null) {
|
if (mExoPlayer == null) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -259,11 +259,11 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
|
||||||
mWasVideoStarted = true
|
mWasVideoStarted = true
|
||||||
mIsPlaying = true
|
mIsPlaying = true
|
||||||
mExoPlayer?.playWhenReady = true
|
mExoPlayer?.playWhenReady = true
|
||||||
video_toggle_play_pause.setImageResource(R.drawable.ic_pause_outline)
|
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun pauseVideo() {
|
private fun pauseVideo() {
|
||||||
|
video_toggle_play_pause.setImageResource(R.drawable.ic_play_outline)
|
||||||
if (mExoPlayer == null) {
|
if (mExoPlayer == null) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -273,7 +273,6 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
|
||||||
mExoPlayer?.playWhenReady = false
|
mExoPlayer?.playWhenReady = false
|
||||||
}
|
}
|
||||||
|
|
||||||
video_toggle_play_pause.setImageResource(R.drawable.ic_play_outline)
|
|
||||||
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,6 +379,10 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
|
||||||
val newAlpha = if (isFullScreen) 0f else 1f
|
val newAlpha = if (isFullScreen) 0f else 1f
|
||||||
top_shadow.animate().alpha(newAlpha).start()
|
top_shadow.animate().alpha(newAlpha).start()
|
||||||
video_time_holder.animate().alpha(newAlpha).start()
|
video_time_holder.animate().alpha(newAlpha).start()
|
||||||
|
video_seekbar.setOnSeekBarChangeListener(if (mIsFullscreen) null else this)
|
||||||
|
arrayOf(video_toggle_play_pause, video_curr_time, video_duration).forEach {
|
||||||
|
it.isClickable = !mIsFullscreen
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initTimeHolder() {
|
private fun initTimeHolder() {
|
||||||
|
@ -417,18 +420,6 @@ open class VideoPlayerActivity : SimpleActivity(), SeekBar.OnSeekBarChangeListen
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hasNavBar(): Boolean {
|
|
||||||
val display = windowManager.defaultDisplay
|
|
||||||
|
|
||||||
val realDisplayMetrics = DisplayMetrics()
|
|
||||||
display.getRealMetrics(realDisplayMetrics)
|
|
||||||
|
|
||||||
val displayMetrics = DisplayMetrics()
|
|
||||||
display.getMetrics(displayMetrics)
|
|
||||||
|
|
||||||
return (realDisplayMetrics.widthPixels - displayMetrics.widthPixels > 0) || (realDisplayMetrics.heightPixels - displayMetrics.heightPixels > 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun skip(forward: Boolean) {
|
private fun skip(forward: Boolean) {
|
||||||
if (mExoPlayer == null) {
|
if (mExoPlayer == null) {
|
||||||
return
|
return
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.simplemobiletools.gallery.pro.extensions
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
|
import android.util.DisplayMetrics
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
|
@ -292,3 +293,15 @@ fun BaseSimpleActivity.updateFavoritePaths(fileDirItems: ArrayList<FileDirItem>,
|
||||||
}
|
}
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Activity.hasNavBar(): Boolean {
|
||||||
|
val display = windowManager.defaultDisplay
|
||||||
|
|
||||||
|
val realDisplayMetrics = DisplayMetrics()
|
||||||
|
display.getRealMetrics(realDisplayMetrics)
|
||||||
|
|
||||||
|
val displayMetrics = DisplayMetrics()
|
||||||
|
display.getMetrics(displayMetrics)
|
||||||
|
|
||||||
|
return (realDisplayMetrics.widthPixels - displayMetrics.widthPixels > 0) || (realDisplayMetrics.heightPixels - displayMetrics.heightPixels > 0)
|
||||||
|
}
|
||||||
|
|
|
@ -11,12 +11,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
<ImageView
|
<include layout="@layout/bottom_video_time_holder"/>
|
||||||
android:id="@+id/vr_view_gradient_background"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:background="@drawable/gradient_background"/>
|
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/explore"
|
android:id="@+id/explore"
|
||||||
|
@ -36,15 +31,4 @@
|
||||||
android:padding="@dimen/activity_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_cardboard"/>
|
android:src="@drawable/ic_cardboard"/>
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/video_play_outline"
|
|
||||||
android:layout_width="@dimen/play_outline_size_big"
|
|
||||||
android:layout_height="@dimen/play_outline_size_big"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:background="@drawable/circle_black_background_with_inset"
|
|
||||||
android:padding="26dp"
|
|
||||||
android:src="@drawable/ic_play"/>
|
|
||||||
|
|
||||||
<include layout="@layout/bottom_video_time_holder"/>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
|
@ -5,12 +5,13 @@
|
||||||
android:id="@+id/video_time_holder"
|
android:id="@+id/video_time_holder"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentBottom="true">
|
android:layout_alignParentBottom="true"
|
||||||
|
android:background="@drawable/gradient_background">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/video_toggle_play_pause"
|
android:id="@+id/video_toggle_play_pause"
|
||||||
android:layout_width="60dp"
|
android:layout_width="@dimen/video_player_play_pause_size"
|
||||||
android:layout_height="60dp"
|
android:layout_height="@dimen/video_player_play_pause_size"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/activity_margin"
|
android:layout_marginTop="@dimen/activity_margin"
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<dimen name="play_outline_size_big">96dp</dimen>
|
<dimen name="play_outline_size_big">96dp</dimen>
|
||||||
<dimen name="tmb_shadow_height">60dp</dimen>
|
<dimen name="tmb_shadow_height">60dp</dimen>
|
||||||
<dimen name="media_side_slider_width">60dp</dimen>
|
<dimen name="media_side_slider_width">60dp</dimen>
|
||||||
|
<dimen name="video_player_play_pause_size">60dp</dimen>
|
||||||
<dimen name="instant_change_bar_width">50dp</dimen>
|
<dimen name="instant_change_bar_width">50dp</dimen>
|
||||||
<dimen name="list_view_folder_thumbnail_size">72dp</dimen>
|
<dimen name="list_view_folder_thumbnail_size">72dp</dimen>
|
||||||
<dimen name="bottom_actions_height">64dp</dimen>
|
<dimen name="bottom_actions_height">64dp</dimen>
|
||||||
|
|
Loading…
Reference in New Issue