mirror of https://git.sr.ht/~oppen/ariane
functional mp3 p[layer
This commit is contained in:
parent
eb169f8c8e
commit
130bd5d641
|
@ -10,8 +10,8 @@ android {
|
||||||
applicationId "oppen.tva"
|
applicationId "oppen.tva"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
versionCode 5
|
versionCode 6
|
||||||
versionName "0.2.0 Beta"
|
versionName "0.3.0 Beta"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -11,8 +11,8 @@
|
||||||
"type": "SINGLE",
|
"type": "SINGLE",
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"properties": [],
|
"properties": [],
|
||||||
"versionCode": 5,
|
"versionCode": 6,
|
||||||
"versionName": "0.2.0 Beta",
|
"versionName": "0.3.0 Beta",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"outputFile": "app-release.apk"
|
"outputFile": "app-release.apk"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,6 @@ class Tva: Application() {
|
||||||
|
|
||||||
companion object{
|
companion object{
|
||||||
const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/tva/index.gmi"
|
const val DEFAULT_HOME_CAPSULE = "gemini://gemini.circumlunar.space/~oppen/tva/index.gmi"
|
||||||
const val GEMINI_USER_SEARCH_BASE = "gemini://gus.guru/search/2?"
|
const val GEMINI_USER_SEARCH_BASE = "gemini://gus.guru/search?"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package oppen.tva.ui
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.media.MediaMetadataRetriever
|
||||||
|
import android.media.MediaPlayer
|
||||||
|
import oppen.tva.R
|
||||||
|
import oppen.tva.databinding.ActivityTvaBinding
|
||||||
|
import oppen.tva.io.TvaState
|
||||||
|
import oppen.visible
|
||||||
|
|
||||||
|
object AudioPlayer {
|
||||||
|
|
||||||
|
fun play(context: Context, binding: ActivityTvaBinding, mediaPlayer: MediaPlayer, state: TvaState.ResponseAudio){
|
||||||
|
val metadataRetriever = MediaMetadataRetriever()
|
||||||
|
metadataRetriever.setDataSource(context, state.cacheUri)
|
||||||
|
|
||||||
|
val artist = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST)
|
||||||
|
val trackName = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE)
|
||||||
|
|
||||||
|
binding.audioTitle.text = "$trackName - $artist"
|
||||||
|
|
||||||
|
mediaPlayer.setDataSource(context, state.cacheUri)
|
||||||
|
mediaPlayer.prepare()
|
||||||
|
|
||||||
|
binding.audioPlayButton.setImageResource(R.drawable.vector_pause)
|
||||||
|
|
||||||
|
mediaPlayer.setOnCompletionListener { player ->
|
||||||
|
binding.audioPlayButton.setImageResource(R.drawable.vector_play)
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.audioPlayButton.setOnClickListener {
|
||||||
|
if(mediaPlayer.isPlaying){
|
||||||
|
binding.audioPlayButton.setImageResource(R.drawable.vector_play)
|
||||||
|
mediaPlayer.pause()
|
||||||
|
}else{
|
||||||
|
binding.audioPlayButton.setImageResource(R.drawable.vector_pause)
|
||||||
|
mediaPlayer.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mediaPlayer.setOnInfoListener { _, what, extra ->
|
||||||
|
when(what){
|
||||||
|
MediaPlayer.MEDIA_INFO_UNKNOWN -> println("MEDIA_INFO_UNKNOWN")
|
||||||
|
MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING-> println("MEDIA_INFO_VIDEO_TRACK_LAGGING")
|
||||||
|
MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START-> println("MEDIA_INFO_VIDEO_RENDERING_START")
|
||||||
|
MediaPlayer.MEDIA_INFO_BUFFERING_START-> println("MEDIA_INFO_BUFFERING_START")
|
||||||
|
MediaPlayer.MEDIA_INFO_BUFFERING_END-> println("MEDIA_INFO_BUFFERING_END")
|
||||||
|
MediaPlayer.MEDIA_INFO_BAD_INTERLEAVING-> println("MEDIA_INFO_BAD_INTERLEAVING")
|
||||||
|
MediaPlayer.MEDIA_INFO_NOT_SEEKABLE-> println("MEDIA_INFO_NOT_SEEKABLE")
|
||||||
|
MediaPlayer.MEDIA_INFO_METADATA_UPDATE-> println("MEDIA_INFO_METADATA_UPDATE")
|
||||||
|
MediaPlayer.MEDIA_INFO_UNSUPPORTED_SUBTITLE-> println("MEDIA_INFO_UNSUPPORTED_SUBTITLE")
|
||||||
|
MediaPlayer.MEDIA_INFO_SUBTITLE_TIMED_OUT-> println("MEDIA_INFO_SUBTITLE_TIMED_OUT")
|
||||||
|
}
|
||||||
|
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
mediaPlayer.setOnErrorListener{ _, i: Int, i1: Int ->
|
||||||
|
println("Error Listener.... $i, $i1")
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.audioPlayer.visible(true)
|
||||||
|
mediaPlayer.start()
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,12 +4,17 @@ import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.media.MediaMetadataRetriever
|
||||||
|
import android.media.MediaPlayer
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.text.SpannableString
|
||||||
|
import android.text.style.ForegroundColorSpan
|
||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.core.text.set
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
@ -32,8 +37,8 @@ import oppen.tva.ui.modals_menus.overflow.OverflowPopup
|
||||||
import oppen.tva.ui.modals_menus.set_home.SetHomeDialog
|
import oppen.tva.ui.modals_menus.set_home.SetHomeDialog
|
||||||
import oppen.tva.ui.modals_menus.tabs.NewTabPopup
|
import oppen.tva.ui.modals_menus.tabs.NewTabPopup
|
||||||
import oppen.tva.ui.modals_menus.tabs.TabsDialog
|
import oppen.tva.ui.modals_menus.tabs.TabsDialog
|
||||||
|
import oppen.visible
|
||||||
import oppen.visibleRetainingSpace
|
import oppen.visibleRetainingSpace
|
||||||
import java.io.ByteArrayOutputStream
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
@ -46,6 +51,8 @@ class TvaActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private var inSearch = false
|
private var inSearch = false
|
||||||
|
|
||||||
|
private val mediaPlayer = MediaPlayer()
|
||||||
|
|
||||||
private val model by viewModels<TvaViewModel>()
|
private val model by viewModels<TvaViewModel>()
|
||||||
private lateinit var binding: ActivityTvaBinding
|
private lateinit var binding: ActivityTvaBinding
|
||||||
private lateinit var history: HistoryInterface
|
private lateinit var history: HistoryInterface
|
||||||
|
@ -204,7 +211,9 @@ class TvaActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private fun renderGemtext(state: TvaState.ResponseGemtext) = runOnUiThread {
|
private fun renderGemtext(state: TvaState.ResponseGemtext) = runOnUiThread {
|
||||||
loadingView(false)
|
loadingView(false)
|
||||||
binding.addressEdit.setText(state.uri.toString())
|
val addressSpan = SpannableString(state.uri.toString())
|
||||||
|
addressSpan.set(0, 9, ForegroundColorSpan(resources.getColor(R.color.protocol_address)))
|
||||||
|
binding.addressEdit.setText(addressSpan)
|
||||||
adapter.render(state.lines)
|
adapter.render(state.lines)
|
||||||
|
|
||||||
history.add(state.uri.toString())
|
history.add(state.uri.toString())
|
||||||
|
@ -218,7 +227,8 @@ class TvaActivity : AppCompatActivity() {
|
||||||
var imageState: TvaState.ResponseImage? = null
|
var imageState: TvaState.ResponseImage? = null
|
||||||
|
|
||||||
private fun renderAudio(state: TvaState.ResponseAudio) = runOnUiThread {
|
private fun renderAudio(state: TvaState.ResponseAudio) = runOnUiThread {
|
||||||
//todo - display audio player
|
loadingView(false)
|
||||||
|
AudioPlayer.play(this, binding, mediaPlayer, state)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderImage(state: TvaState.ResponseImage) = runOnUiThread{
|
private fun renderImage(state: TvaState.ResponseImage) = runOnUiThread{
|
||||||
|
|
|
@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatDialog
|
||||||
import kotlinx.android.synthetic.main.dialog_input_query.view.*
|
import kotlinx.android.synthetic.main.dialog_input_query.view.*
|
||||||
import oppen.tva.R
|
import oppen.tva.R
|
||||||
import oppen.tva.io.TvaState
|
import oppen.tva.io.TvaState
|
||||||
|
import java.net.URLEncoder
|
||||||
|
|
||||||
object InputDialog {
|
object InputDialog {
|
||||||
|
|
||||||
|
@ -22,7 +23,8 @@ object InputDialog {
|
||||||
view.query_text.text = state.header.meta
|
view.query_text.text = state.header.meta
|
||||||
|
|
||||||
view.query_submit_button.setOnClickListener {
|
view.query_submit_button.setOnClickListener {
|
||||||
onQuery("${state.uri}?${view.query_input.text.toString()}")
|
val encoded = URLEncoder.encode(view.query_input.text.toString(), "UTF-8")
|
||||||
|
onQuery("${state.uri}?$encoded")
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<inset xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:insetBottom="0dp"
|
||||||
|
android:insetLeft="0dp"
|
||||||
|
android:insetRight="0dp"
|
||||||
|
android:insetTop="0dp">
|
||||||
|
<shape
|
||||||
|
android:shape="rectangle" android:tint="@color/address_background">
|
||||||
|
<stroke android:color="?attr/colorControlNormal" android:width="1dp" />
|
||||||
|
<corners android:radius="22dp" />
|
||||||
|
</shape>
|
||||||
|
</inset>
|
|
@ -1,5 +0,0 @@
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:shape="rectangle">
|
|
||||||
<stroke android:color="?attr/colorControlNormal" android:width="1dp" />
|
|
||||||
<corners android:radius="5dp" />
|
|
||||||
</shape>
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<inset xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:insetBottom="3dp"
|
||||||
|
android:insetLeft="3dp"
|
||||||
|
android:insetRight="3dp"
|
||||||
|
android:insetTop="3dp">
|
||||||
|
<shape
|
||||||
|
android:shape="rectangle">
|
||||||
|
<stroke android:color="?attr/colorControlNormal" android:width="1dp" />
|
||||||
|
<corners android:radius="5dp" />
|
||||||
|
</shape>
|
||||||
|
</inset>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"/>
|
||||||
|
</vector>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M8,5v14l11,-7z"/>
|
||||||
|
</vector>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M19,12v7L5,19v-7L3,12v7c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2zM13,12.67l2.59,-2.58L17,11.5l-5,5 -5,-5 1.41,-1.41L11,12.67L11,3h2z"/>
|
||||||
|
</vector>
|
|
@ -15,6 +15,7 @@
|
||||||
android:id="@+id/app_bar"
|
android:id="@+id/app_bar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/colorPrimaryDark"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||||
|
@ -22,24 +23,26 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
app:contentScrim="?attr/colorPrimary"
|
app:contentScrim="?attr/colorPrimaryDark"
|
||||||
app:layout_scrollFlags="scroll|enterAlways"
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
app:toolbarId="@+id/toolbar">
|
app:toolbarId="@+id/toolbar">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
<RelativeLayout
|
android:layout_marginTop="@dimen/default_margin">
|
||||||
|
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/address_bar"
|
android:id="@+id/address_bar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="@dimen/default_margin"
|
|
||||||
android:paddingBottom="@dimen/default_margin">
|
android:paddingBottom="@dimen/default_margin">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
android:id="@+id/home"
|
android:id="@+id/home"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="@dimen/button_size"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/button_size"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_margin="@dimen/button_margin"
|
android:layout_margin="@dimen/button_margin"
|
||||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
|
@ -47,43 +50,49 @@
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatEditText
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
android:id="@+id/address_edit"
|
android:id="@+id/address_edit"
|
||||||
|
android:background="@drawable/drawable_filled_rounded_rect"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toRightOf="@+id/home"
|
android:paddingTop="12dp"
|
||||||
android:layout_toLeftOf="@+id/tabs"
|
android:paddingBottom="12dp"
|
||||||
|
android:paddingLeft="12dp"
|
||||||
|
android:paddingRight="12dp"
|
||||||
|
android:layout_toEndOf="@+id/home"
|
||||||
|
android:layout_toStartOf="@+id/tabs"
|
||||||
android:inputType="textNoSuggestions|textUri"
|
android:inputType="textNoSuggestions|textUri"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="14sp"
|
android:textSize="12sp"
|
||||||
android:imeOptions="actionGo"
|
android:imeOptions="actionGo"
|
||||||
android:hint="@string/main_input_hint"/>
|
android:hint="@string/main_input_hint" />
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/tabs"
|
android:id="@+id/tabs"
|
||||||
android:layout_width="20dp"
|
android:layout_width="28dp"
|
||||||
android:layout_height="20dp"
|
android:layout_height="28dp"
|
||||||
android:layout_toLeftOf="@+id/more"
|
android:layout_toLeftOf="@+id/more"
|
||||||
|
android:layout_marginStart="@dimen/default_margin"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_margin="@dimen/button_margin"
|
android:background="@drawable/drawable_stroke_rounded_rect"
|
||||||
android:background="@drawable/drawable_rounded_rect"
|
|
||||||
android:foreground="?android:attr/selectableItemBackgroundBorderless">
|
android:foreground="?android:attr/selectableItemBackgroundBorderless">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/tab_count"
|
android:id="@+id/tab_count"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:layout_gravity="center"
|
||||||
android:textColor="?attr/colorControlNormal"
|
android:textColor="?attr/colorControlNormal"
|
||||||
android:textSize="12dp"
|
android:textSize="12dp"
|
||||||
android:text="1"/>
|
android:text="1" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
android:id="@+id/more"
|
android:id="@+id/more"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="@dimen/button_size"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="@dimen/button_size"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_margin="@dimen/button_margin"
|
android:layout_margin="@dimen/button_margin"
|
||||||
|
@ -102,6 +111,49 @@
|
||||||
android:layout_below="@+id/address_bar"
|
android:layout_below="@+id/address_bar"
|
||||||
android:indeterminate="true" />
|
android:indeterminate="true" />
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/audio_player"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/bar_height"
|
||||||
|
android:layout_below="@+id/progress_bar"
|
||||||
|
android:background="@color/player_background"
|
||||||
|
android:paddingLeft="@dimen/default_margin"
|
||||||
|
android:paddingRight="@dimen/default_margin"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
|
android:id="@+id/audio_play_button"
|
||||||
|
android:layout_width="@dimen/button_size"
|
||||||
|
android:layout_height="@dimen/button_size"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
|
android:padding="@dimen/button_margin"
|
||||||
|
android:src="@drawable/vector_play" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/audio_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_toLeftOf="@+id/audio_overflow"
|
||||||
|
android:paddingLeft="@dimen/default_margin"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:text="Aphex Twin - Flim"
|
||||||
|
android:layout_toRightOf="@+id/audio_play_button" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
|
android:id="@+id/audio_overflow"
|
||||||
|
android:layout_width="@dimen/button_size"
|
||||||
|
android:layout_height="@dimen/button_size"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
|
android:padding="@dimen/button_margin"
|
||||||
|
android:src="@drawable/vector_overflow" />
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="150dp"
|
android:layout_height="150dp"
|
||||||
android:layout_margin="@dimen/button_margin"
|
android:layout_margin="@dimen/button_margin"
|
||||||
android:background="@drawable/drawable_rounded_rect"
|
android:background="@drawable/drawable_stroke_rounded_rect"
|
||||||
android:padding="@dimen/default_margin"
|
android:padding="@dimen/default_margin"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<color name="colorPrimary">#ffffff</color>
|
<color name="colorPrimary">#ffffff</color>
|
||||||
<color name="colorPrimaryDark">#B8B8B8</color>
|
<color name="colorPrimaryDark">#1d1d1d</color>
|
||||||
<color name="colorAccent">#03DAC5</color>
|
<color name="colorAccent">#03DAC5</color>
|
||||||
<color name="code_background">#000000</color>
|
<color name="code_background">#000000</color>
|
||||||
|
<color name="player_background">#1d1d1d</color>
|
||||||
|
<color name="protocol_address">#ffdede</color>
|
||||||
|
<color name="address_background">#2e2e2e</color>
|
||||||
</resources>
|
</resources>
|
|
@ -1,7 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<color name="colorPrimary">#ffffff</color>
|
<color name="colorPrimary">#ffffff</color>
|
||||||
<color name="colorPrimaryDark">#1d1d1d</color>
|
<color name="colorPrimaryDark">#efefef</color>
|
||||||
<color name="colorAccent">#03DAC5</color>
|
<color name="colorAccent">#03DAC5</color>
|
||||||
<color name="code_background">#efefef</color>
|
<color name="code_background">#efefef</color>
|
||||||
|
<color name="player_background">#efefef</color>
|
||||||
|
<color name="protocol_address">#002121</color>
|
||||||
|
<color name="address_background">#dfdfdf</color>
|
||||||
</resources>
|
</resources>
|
|
@ -8,4 +8,6 @@
|
||||||
<dimen name="h1_text_size">28sp</dimen>
|
<dimen name="h1_text_size">28sp</dimen>
|
||||||
<dimen name="h2_text_size">22sp</dimen>
|
<dimen name="h2_text_size">22sp</dimen>
|
||||||
<dimen name="h3_text_size">18sp</dimen>
|
<dimen name="h3_text_size">18sp</dimen>
|
||||||
|
<dimen name="button_size">32dp</dimen>
|
||||||
|
<dimen name="bar_height">50dp</dimen>
|
||||||
</resources>
|
</resources>
|
|
@ -4,7 +4,7 @@
|
||||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||||
<item name="colorAccent">@color/colorAccent</item>
|
<item name="colorAccent">@color/colorAccent</item>
|
||||||
<item name="android:windowTranslucentStatus">false</item>
|
<item name="android:windowTranslucentStatus">false</item>
|
||||||
<item name="android:statusBarColor">#1d1d1d</item>
|
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
|
||||||
<item name="windowActionBar">false</item>
|
<item name="windowActionBar">false</item>
|
||||||
<item name="windowNoTitle">true</item>
|
<item name="windowNoTitle">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue