GameDetailsDialog: Convert layout to ConstraintLayout

This also removes the FAB from GameDetailsDialog. It was
previously outside of the visible area and thus unusable.
This commit is contained in:
JosJuice 2019-10-21 14:42:57 +02:00
parent 4f1511043c
commit 2e13353201
3 changed files with 124 additions and 146 deletions

View File

@ -80,6 +80,7 @@ dependencies {
implementation 'androidx.exifinterface:exifinterface:1.1.0' implementation 'androidx.exifinterface:exifinterface:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0' implementation 'com.google.android.material:material:1.0.0'
// Android TV UI libraries. // Android TV UI libraries.

View File

@ -10,10 +10,7 @@ import android.widget.TextView;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment; import androidx.fragment.app.DialogFragment;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import org.dolphinemu.dolphinemu.model.GameFile; import org.dolphinemu.dolphinemu.model.GameFile;
import org.dolphinemu.dolphinemu.services.GameFileCacheService; import org.dolphinemu.dolphinemu.services.GameFileCacheService;
import org.dolphinemu.dolphinemu.utils.PicassoUtils; import org.dolphinemu.dolphinemu.utils.PicassoUtils;
@ -52,8 +49,6 @@ public final class GameDetailsDialog extends DialogFragment
TextView textGameId = contents.findViewById(R.id.text_game_id); TextView textGameId = contents.findViewById(R.id.text_game_id);
TextView textRevision = contents.findViewById(R.id.text_revision); TextView textRevision = contents.findViewById(R.id.text_revision);
FloatingActionButton buttonLaunch = contents.findViewById(R.id.button_launch);
String country = getResources().getStringArray(R.array.countryNames)[gameFile.getCountry()]; String country = getResources().getStringArray(R.array.countryNames)[gameFile.getCountry()];
String description = gameFile.getDescription(); String description = gameFile.getDescription();
@ -68,12 +63,6 @@ public final class GameDetailsDialog extends DialogFragment
textGameId.setText(gameFile.getGameId()); textGameId.setText(gameFile.getGameId());
textRevision.setText(Integer.toString(gameFile.getRevision())); textRevision.setText(Integer.toString(gameFile.getRevision()));
buttonLaunch.setOnClickListener(view ->
{
// Start the emulation activity and send the path of the clicked ROM to it.
EmulationActivity.launch(getActivity(), gameFile);
});
PicassoUtils.loadGameBanner(banner, gameFile); PicassoUtils.loadGameBanner(banner, gameFile);
builder.setView(contents); builder.setView(contents);

View File

@ -1,149 +1,137 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout 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:layout_height="wrap_content" android:id="@+id/frameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:paddingStart="24dp" android:layout_height="wrap_content"
android:paddingEnd="24dp" android:paddingStart="24dp"
android:paddingBottom="24dp" android:paddingEnd="24dp"
android:transitionName="card_game"> android:paddingBottom="24dp"
android:transitionName="card_game">
<RelativeLayout <TextView
android:layout_width="480dp" android:id="@+id/text_game_title"
android:layout_height="wrap_content"> style="@android:style/TextAppearance.Material.Headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:ellipsize="end"
tools:text="Rhythm Heaven Fever"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView <TextView
android:id="@+id/banner" android:id="@+id/text_description"
android:layout_width="144dp" style="@android:style/TextAppearance.Material.Caption"
android:layout_height="48dp" android:layout_width="wrap_content"
android:layout_below="@+id/text_description" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="8dp"
android:layout_marginBottom="16dp" tools:text="Zany rhythm action!"
tools:src="@drawable/no_banner"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_game_title" />
<TextView <ImageView
android:id="@+id/text_game_title" android:id="@+id/banner"
style="@android:style/TextAppearance.Material.Headline" android:layout_width="144dp"
android:layout_width="match_parent" android:layout_height="48dp"
android:layout_height="wrap_content" android:layout_marginTop="16dp"
android:layout_marginTop="24dp" android:layout_marginBottom="16dp"
android:ellipsize="end" tools:src="@drawable/no_banner"
tools:text="Rhythm Heaven Fever"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text_description" />
<TextView <View
android:id="@+id/text_description" android:id="@+id/divider"
style="@android:style/TextAppearance.Material.Caption" android:layout_width="0dp"
android:layout_width="match_parent" android:layout_height="1dp"
android:layout_height="wrap_content" android:background="#1F000000"
android:layout_alignEnd="@+id/text_game_title" android:layout_marginTop="32dp"
android:layout_alignStart="@+id/text_game_title" app:layout_constraintStart_toStartOf="parent"
android:layout_below="@+id/text_game_title" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@id/banner" />
tools:text="Zany rhythm action!"/>
<View <ImageView
android:id="@+id/divider" android:id="@+id/icon_country"
android:layout_width="0dp" android:layout_width="48dp"
android:layout_height="1dp" android:layout_height="48dp"
android:layout_alignParentLeft="true" android:layout_marginTop="24dp"
android:layout_alignParentRight="true" android:padding="6dp"
android:layout_below="@+id/banner" android:src="@drawable/ic_country"
android:layout_marginTop="16dp" app:layout_constraintStart_toStartOf="parent"
android:background="#1F000000"/> app:layout_constraintTop_toBottomOf="@id/divider" />
<ImageView <ImageView
android:id="@+id/icon_country" android:id="@+id/icon_company"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_alignStart="@+id/banner" android:layout_marginTop="24dp"
android:layout_alignTop="@+id/divider" android:padding="6dp"
android:layout_marginTop="24dp" android:src="@drawable/ic_company"
android:padding="6dp" app:layout_constraintStart_toStartOf="parent"
android:src="@drawable/ic_country"/> app:layout_constraintTop_toBottomOf="@id/icon_country" />
<ImageView <ImageView
android:id="@+id/icon_company" android:id="@+id/icon_game_id"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_alignStart="@+id/icon_country" android:layout_marginTop="24dp"
android:layout_below="@+id/icon_country" android:padding="6dp"
android:layout_marginTop="16dp" app:layout_constraintStart_toStartOf="parent"
android:padding="6dp" app:layout_constraintTop_toBottomOf="@id/icon_company" />
android:src="@drawable/ic_company"/>
<ImageView <ImageView
android:id="@+id/icon_game_id" android:id="@+id/icon_revision"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_alignStart="@+id/icon_company" android:layout_marginTop="24dp"
android:layout_below="@+id/icon_company" android:padding="6dp"
android:layout_marginTop="16dp" app:layout_constraintStart_toStartOf="parent"
android:padding="6dp"/> app:layout_constraintTop_toBottomOf="@id/icon_game_id"
app:layout_constraintBottom_toBottomOf="parent" />
<ImageView <TextView
android:id="@+id/icon_revision" android:id="@+id/text_country"
android:layout_width="48dp" android:layout_width="wrap_content"
android:layout_height="48dp" android:layout_height="wrap_content"
android:layout_alignStart="@+id/icon_game_id" android:layout_marginStart="16dp"
android:layout_below="@+id/icon_game_id" android:gravity="center_vertical"
android:layout_marginTop="16dp" tools:text="United States"
android:padding="6dp"/> app:layout_constraintStart_toEndOf="@id/icon_country"
app:layout_constraintTop_toTopOf="@id/icon_country"
app:layout_constraintBottom_toBottomOf="@id/icon_country" />
<TextView <TextView
android:id="@+id/text_country" android:id="@+id/text_company"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_toEndOf="@+id/icon_country" android:gravity="center_vertical"
android:layout_alignBottom="@+id/icon_country" tools:text="Nintendo"
android:layout_alignTop="@+id/icon_country" app:layout_constraintStart_toEndOf="@id/icon_company"
android:gravity="center_vertical" app:layout_constraintTop_toTopOf="@id/icon_company"
tools:text="United States"/> app:layout_constraintBottom_toBottomOf="@id/icon_company" />
<TextView <TextView
android:id="@+id/text_company" android:id="@+id/text_game_id"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/icon_company" android:layout_marginStart="16dp"
android:layout_alignStart="@+id/text_country" android:gravity="center_vertical"
android:layout_alignTop="@+id/icon_company" tools:text="SOME01"
android:gravity="center_vertical" app:layout_constraintStart_toEndOf="@id/icon_game_id"
tools:text="Nintendo"/> app:layout_constraintTop_toTopOf="@id/icon_game_id"
app:layout_constraintBottom_toBottomOf="@id/icon_game_id" />
<TextView <TextView
android:id="@+id/text_game_id" android:id="@+id/text_revision"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/icon_game_id" android:layout_marginStart="16dp"
android:layout_alignStart="@+id/text_company" android:gravity="center_vertical"
android:layout_alignTop="@+id/icon_game_id" tools:text="0"
android:gravity="center_vertical" app:layout_constraintStart_toEndOf="@id/icon_revision"
tools:text="SOME01"/> app:layout_constraintTop_toTopOf="@id/icon_revision"
app:layout_constraintBottom_toBottomOf="@id/icon_revision" />
<TextView </androidx.constraintlayout.widget.ConstraintLayout>
android:id="@+id/text_revision"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/icon_revision"
android:layout_alignStart="@+id/text_game_id"
android:layout_alignTop="@+id/icon_revision"
android:gravity="center_vertical"
tools:text="0"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/button_launch"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_alignEnd="@+id/text_game_title"
android:layout_marginBottom="-28dp"
android:src="@drawable/ic_play"
android:stateListAnimator="@animator/button_elevation"
app:rippleColor="?android:colorPrimaryDark"
app:borderWidth="0dp"
app:elevation="6dp"
app:pressedTranslationZ="12dp"/>
</RelativeLayout>
</FrameLayout>