mirror of
https://github.com/IllusionMan1212/NPS-Browser.git
synced 2026-10-24 02:12:37 +00:00
initial implementation of game icons
This commit is contained in:
+18
-10
@@ -52,25 +52,33 @@ android {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
implementation 'androidx.appcompat:appcompat:1.3.0'
|
||||||
implementation 'androidx.core:core-ktx:1.3.2'
|
implementation 'androidx.core:core-ktx:1.6.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||||
implementation "androidx.coordinatorlayout:coordinatorlayout:1.1.0"
|
implementation "androidx.coordinatorlayout:coordinatorlayout:1.1.0"
|
||||||
implementation 'com.github.doyaaaaaken:kotlin-csv-jvm:0.11.1'
|
implementation 'com.github.doyaaaaaken:kotlin-csv-jvm:0.11.1'
|
||||||
implementation 'com.github.wrdlbrnft:sorted-list-adapter:0.3.0.27'
|
implementation 'com.github.wrdlbrnft:sorted-list-adapter:0.3.0.27'
|
||||||
implementation "androidx.cardview:cardview:1.0.0"
|
implementation "androidx.cardview:cardview:1.0.0"
|
||||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.1'
|
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
|
||||||
implementation 'androidx.navigation:navigation-ui-ktx:2.3.1'
|
implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
|
||||||
implementation 'androidx.preference:preference-ktx:1.1.1'
|
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
|
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
||||||
testImplementation 'junit:junit:4.13'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||||
implementation 'com.google.android.material:material:1.2.1'
|
implementation 'com.google.android.material:material:1.4.0'
|
||||||
|
implementation 'com.github.bumptech.glide:glide:4.12.0'
|
||||||
|
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
|
||||||
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,18 +12,24 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.swiperefreshlayout.widget.CircularProgressDrawable
|
||||||
|
import com.bumptech.glide.Glide
|
||||||
import com.illusionware.npsbrowser.AppData
|
import com.illusionware.npsbrowser.AppData
|
||||||
import com.illusionware.npsbrowser.R
|
import com.illusionware.npsbrowser.R
|
||||||
import java.lang.Exception
|
|
||||||
|
|
||||||
class SingleAppFragment : Fragment() {
|
class SingleAppFragment : Fragment() {
|
||||||
|
private val baseStoreURL = "https://store.playstation.com/store/api/chihiro/00_09_000/container"
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
lateinit var app : AppData
|
lateinit var app : AppData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: either use binding or make vars for all the views
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
@@ -59,25 +65,37 @@ class SingleAppFragment : Fragment() {
|
|||||||
|
|
||||||
view?.findViewById<TextView>(R.id.singleAppContentId)?.setOnLongClickListener {
|
view?.findViewById<TextView>(R.id.singleAppContentId)?.setOnLongClickListener {
|
||||||
val clipboardManager = requireActivity().getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
val clipboardManager = requireActivity().getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
||||||
val clipData = ClipData.newPlainText("Content ID", view?.findViewById<TextView>(R.id.singleAppContentId)?.text)
|
val clipData = ClipData.newPlainText(
|
||||||
|
"Content ID",
|
||||||
|
view?.findViewById<TextView>(R.id.singleAppContentId)?.text
|
||||||
|
)
|
||||||
clipboardManager.setPrimaryClip(clipData)
|
clipboardManager.setPrimaryClip(clipData)
|
||||||
Toast.makeText(requireContext(), "Content ID Copied to Clipboard!", Toast.LENGTH_SHORT).show()
|
Toast.makeText(requireContext(), "Content ID Copied to Clipboard!", Toast.LENGTH_SHORT).show()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// click listener for the download button
|
||||||
view?.findViewById<Button>(R.id.singleAppDownloadButton)?.setOnClickListener {
|
view?.findViewById<Button>(R.id.singleAppDownloadButton)?.setOnClickListener {
|
||||||
try {
|
try {
|
||||||
var request = DownloadManager.Request(Uri.parse(app.link))
|
var request = DownloadManager.Request(Uri.parse(app.link))
|
||||||
request.setTitle(app.title)
|
request.setTitle(app.title)
|
||||||
request.setDescription("Downloading...")
|
request.setDescription("Downloading...")
|
||||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
|
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
|
||||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, app.title + ".pkg") // TODO: set up preference for this
|
request.setDestinationInExternalPublicDir(
|
||||||
|
Environment.DIRECTORY_DOWNLOADS,
|
||||||
|
app.title + ".pkg"
|
||||||
|
) // TODO: set up preference for this
|
||||||
downloadManager.enqueue(request)
|
downloadManager.enqueue(request)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Toast.makeText(requireContext(), "An error occurred while downloading. please try again", Toast.LENGTH_SHORT).show()
|
Toast.makeText(
|
||||||
|
requireContext(),
|
||||||
|
"An error occurred while downloading. please try again",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// long click listener for download button
|
||||||
view?.findViewById<Button>(R.id.singleAppDownloadButton)?.setOnLongClickListener {
|
view?.findViewById<Button>(R.id.singleAppDownloadButton)?.setOnLongClickListener {
|
||||||
val clipboardManager = requireActivity().getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
val clipboardManager = requireActivity().getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
||||||
val clipData = ClipData.newPlainText("PKG URL", app.link)
|
val clipData = ClipData.newPlainText("PKG URL", app.link)
|
||||||
@@ -85,6 +103,27 @@ class SingleAppFragment : Fragment() {
|
|||||||
Toast.makeText(requireContext(), "PKG URL Copied to Clipboard", Toast.LENGTH_SHORT).show()
|
Toast.makeText(requireContext(), "PKG URL Copied to Clipboard", Toast.LENGTH_SHORT).show()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the height for the error text to 0 if there's no error so that the scrollview can take more space
|
||||||
|
if (view?.findViewById<TextView>(R.id.singleAppError)?.text.isNullOrEmpty()) {
|
||||||
|
view?.findViewById<TextView>(R.id.singleAppError)?.layoutParams?.height = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if (app.contentID != null) {
|
||||||
|
val circularProgressDrawable = CircularProgressDrawable(requireContext())
|
||||||
|
circularProgressDrawable.setColorSchemeColors(0x43EB92)
|
||||||
|
circularProgressDrawable.strokeWidth = 10f
|
||||||
|
circularProgressDrawable.centerRadius = 180f
|
||||||
|
circularProgressDrawable.start()
|
||||||
|
|
||||||
|
val image : ImageView? = view?.findViewById<ImageView>(R.id.singleAppIcon)
|
||||||
|
val iconURL = getImage(app.contentID!!)
|
||||||
|
if (iconURL != null) {
|
||||||
|
// TODO: make the options a requestOptions
|
||||||
|
Glide.with(this).load(iconURL).placeholder(circularProgressDrawable).error(R.drawable.ic_games_placeholder_24dp).into(image!!)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return view
|
return view
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,4 +151,26 @@ class SingleAppFragment : Fragment() {
|
|||||||
private fun toGB(size: Number): Number {
|
private fun toGB(size: Number): Number {
|
||||||
return size.toFloat() / (1024 * 1024 * 1024)
|
return size.toFloat() / (1024 * 1024 * 1024)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getImage(contentID: String): String? {
|
||||||
|
when (contentID.substring(0, 2)) {
|
||||||
|
"EP" -> {
|
||||||
|
// european games
|
||||||
|
return "$baseStoreURL/SA/en/999/${contentID}/image"
|
||||||
|
}
|
||||||
|
"UP" -> {
|
||||||
|
// united states games
|
||||||
|
return "$baseStoreURL/US/en/999/${contentID}/image"
|
||||||
|
}
|
||||||
|
"JP" -> {
|
||||||
|
// japanese games
|
||||||
|
return "$baseStoreURL/jp/ja/999/${contentID}/image"
|
||||||
|
}
|
||||||
|
"KP" -> {
|
||||||
|
// korean(?) games
|
||||||
|
// TODO: do this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,143 +1,44 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/linear"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/singleAppFwVerTitle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginTop="14dp"
|
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:fontFamily="sans-serif-black"
|
|
||||||
android:text="MinFW"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="26sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppSize" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/singleAppSizeTitle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginTop="14dp"
|
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:fontFamily="sans-serif-black"
|
|
||||||
android:text="Size"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="26sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppContentId" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/singleAppContentIdTitle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginTop="14dp"
|
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:fontFamily="sans-serif-black"
|
|
||||||
android:text="Content ID"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="26sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppDownloadButton" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/singleAppError"
|
android:id="@+id/singleAppError"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="60dp"
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:fontFamily="sans-serif-light"
|
android:fontFamily="sans-serif-light"
|
||||||
|
android:gravity="center"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="@color/colorAccent"
|
android:textColor="@color/colorAccent"
|
||||||
android:textSize="24sp"
|
android:textSize="24sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
tools:text="error" />
|
tools:text="error" />
|
||||||
|
|
||||||
<Button
|
<ScrollView
|
||||||
android:id="@+id/singleAppDownloadButton"
|
android:id="@+id/scrollView2"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="66dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginStart="48dp"
|
android:fillViewport="true"
|
||||||
android:layout_marginTop="12dp"
|
app:layout_constraintBottom_toTopOf="@+id/singleAppError"
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:text="Download"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppTitle" />
|
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
|
||||||
|
|
||||||
<TextView
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/singleAppFwVer"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="48dp"
|
app:layout_constrainedHeight="false"
|
||||||
android:layout_marginTop="8dp"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:fontFamily="sans-serif-light"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="24sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppFwVerTitle"
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
tools:text="MinFW" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/singleAppContentId"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:fontFamily="sans-serif-light"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="24sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppContentIdTitle"
|
|
||||||
tools:text="Content ID" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/singleAppSize"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:layout_marginEnd="48dp"
|
|
||||||
android:fontFamily="sans-serif-light"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="24sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/singleAppSizeTitle"
|
|
||||||
tools:text="Size" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/singleAppTitle"
|
android:id="@+id/singleAppTitle"
|
||||||
@@ -151,10 +52,128 @@
|
|||||||
android:textSize="24sp"
|
android:textSize="24sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="1.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:text="Game Title" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/singleAppContentIdTitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="19dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:fontFamily="sans-serif-black"
|
||||||
|
android:text="Content ID"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textSize="26sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout"
|
app:layout_constraintTop_toBottomOf="@+id/singleAppDownloadButton" />
|
||||||
tools:text="Game Title" />
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/singleAppDownloadButton"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="66dp"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="9dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:text="Download"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/singleAppTitle" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/singleAppContentId"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="11dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:fontFamily="sans-serif-light"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textSize="24sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/singleAppContentIdTitle"
|
||||||
|
tools:text="Content ID" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/singleAppSizeTitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:fontFamily="sans-serif-black"
|
||||||
|
android:text="Size"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textSize="26sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/singleAppContentId" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/singleAppSize"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="7dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:fontFamily="sans-serif-light"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textSize="24sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="1.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/singleAppSizeTitle"
|
||||||
|
tools:text="Size" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/singleAppFwVerTitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:fontFamily="sans-serif-black"
|
||||||
|
android:text="MinFW"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textSize="26sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/singleAppSize" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/singleAppFwVer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="48dp"
|
||||||
|
android:fontFamily="sans-serif-light"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textSize="24sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="1.0"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/singleAppFwVerTitle"
|
||||||
|
tools:text="MinFW" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/linearLayout"
|
android:id="@+id/linearLayout"
|
||||||
@@ -168,10 +187,10 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/singleAppIcon"
|
android:id="@+id/singleAppIcon"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="180dp"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginStart="140dp"
|
android:layout_marginStart="100dp"
|
||||||
android:layout_marginTop="30dp"
|
android:layout_marginTop="0dp"
|
||||||
android:layout_marginEnd="141dp"
|
android:layout_marginEnd="100dp"
|
||||||
android:contentDescription="Single app icon"
|
android:contentDescription="Single app icon"
|
||||||
app:srcCompat="@drawable/ic_games_placeholder_24dp" />
|
app:srcCompat="@drawable/ic_games_placeholder_24dp" />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user