Android: Update the look of dialog

This commit is contained in:
zilmar 2022-07-11 19:22:27 +09:30
parent 71ed3c0a2f
commit 8726931be5
11 changed files with 318 additions and 320 deletions

View File

@ -1,16 +1,9 @@
package emu.project64;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import emu.project64.R;
import emu.project64.dialog.ProgressDialog;
@ -23,14 +16,10 @@ import emu.project64.settings.GameSettingsActivity;
import emu.project64.settings.SettingsActivity;
import emu.project64.util.Strings;
import android.annotation.TargetApi;
import android.app.Activity;
import androidx.appcompat.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
@ -38,22 +27,21 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TextView.BufferType;
import android.widget.Toast;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.appcompat.view.menu.MenuBuilder;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
@ -117,7 +105,7 @@ public class GalleryActivity extends AppCompatActivity
// Lay out the content
setContentView( R.layout.gallery_activity );
mGridView = (RecyclerView) findViewById( R.id.gridview );
mProgress = new ProgressDialog( null, this, getString( R.string.scanning_title ), "", getString( R.string.toast_pleaseWait ), false );
mProgress = new ProgressDialog(this, getString( R.string.scanning_title ), getString( R.string.toast_pleaseWait ), false );
// Load Cached Rom List
NativeExports.LoadRomList();
@ -293,27 +281,21 @@ public class GalleryActivity extends AppCompatActivity
// Get Drawable icon
Drawable d = items[position].icon != 0 ? ResourcesCompat.getDrawable(getResources(), items[position].icon, null) : null;
tv.setTextColor(Color.parseColor("#FFFFFF"));
tv.setTextColor(Color.parseColor("#000000"));
if (d != null)
{
d.setColorFilter(Color.parseColor("#FFFFFF"), android.graphics.PorterDuff.Mode.SRC_ATOP);
d.setColorFilter(Color.parseColor("#000000"), android.graphics.PorterDuff.Mode.SRC_ATOP);
}
if (!isEnabled(position))
{
tv.setTextColor(Color.parseColor("#555555"));
tv.setTextColor(Color.parseColor("#AAAAAA"));
if (d != null)
{
d.setColorFilter(Color.parseColor("#555555"), android.graphics.PorterDuff.Mode.SRC_ATOP);
d.setColorFilter(Color.parseColor("#AAAAAA"), android.graphics.PorterDuff.Mode.SRC_ATOP);
}
}
//Put the image on the TextView
tv.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null);
//Add margin between image and text (support various screen densities)
int dp5 = (int) (5 * getResources().getDisplayMetrics().density + 0.5f);
tv.setCompoundDrawablePadding(dp5);
tv.setCompoundDrawablePadding((int) (15 * getResources().getDisplayMetrics().density + 0.5f));
return v;
}
@ -338,53 +320,65 @@ public class GalleryActivity extends AppCompatActivity
}
};
final LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.dialog_menu, null );
final Context finalContext = this;
AlertDialog.Builder GameMenu = new AlertDialog.Builder(finalContext);
GameMenu.setTitle(NativeExports.SettingsLoadString(SettingsID.Rdb_GoodName.toString()));
GameMenu.setAdapter(adapter, new DialogInterface.OnClickListener()
AlertDialog.Builder GameMenu = new AlertDialog.Builder(new ContextThemeWrapper(finalContext,R.style.Theme_Project64_Dialog_Alert));
GameMenu.setView( layout);
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
DlgTitle.setText(NativeExports.SettingsLoadString(SettingsID.Rdb_GoodName.toString()));
ListView ListOptions = (ListView)layout.findViewById(R.id.list_options);
ListOptions.setAdapter(adapter);
AlertDialog dialog = GameMenu.create();
ListOptions.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onClick(DialogInterface dialog, int item)
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if (item == 0)
if (position == 0)
{
launchGameActivity(false);
}
else if (item == 1)
else if (position == 1)
{
launchGameActivity(true);
}
else if (item == 2)
else if (position == 2)
{
AlertDialog.Builder ResetPrompt = new AlertDialog.Builder(finalContext);
/*AlertDialog.Builder ResetPrompt = new AlertDialog.Builder(finalContext);
ResetPrompt
.setTitle(getText(R.string.confirmResetGame_title))
.setMessage(getText(R.string.confirmResetGame_message))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
String[]entries = SaveDir.list();
for(String s: entries)
.setTitle(getText(R.string.confirmResetGame_title))
.setMessage(getText(R.string.confirmResetGame_message))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
File currentFile = new File(SaveDir.getPath(),s);
currentFile.delete();
}
SaveDir.delete();
launchGameActivity(false);
}
})
.setNegativeButton(android.R.string.cancel, this)
.show();
public void onClick(DialogInterface dialog, int id)
{
String[]entries = SaveDir.list();
for(String s: entries)
{
File currentFile = new File(SaveDir.getPath(),s);
currentFile.delete();
}
SaveDir.delete();
launchGameActivity(false);
}
})
.setNegativeButton(android.R.string.cancel, this)
.show();*/
}
else if (item == 3)
else if (position == 3)
{
Intent SettingsIntent = new Intent(finalContext, GameSettingsActivity.class);
startActivityForResult( SettingsIntent, RC_SETTINGS );
dialog.dismiss();
}
}
});
GameMenu.show();
dialog.show();
}
public void onGalleryItemClick( GalleryItem item )
@ -552,16 +546,12 @@ public class GalleryActivity extends AppCompatActivity
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
{
Handler h = new Handler(Looper.getMainLooper());
final String ProgressText = new String(FileName);
final String ProgressSubText = new String(FullFileName);
final String ProgressMessage = new String("Added " + GoodName);
h.post(new Runnable()
{
public void run()
{
mActiveGalleryActivity.mProgress.setText(ProgressText);
mActiveGalleryActivity.mProgress.setSubtext(ProgressSubText);
mActiveGalleryActivity.mProgress.setMessage(ProgressMessage);
}
});

View File

@ -51,7 +51,7 @@ public class GalleryItem
@Override
public String toString()
{
if( !TextUtils.isEmpty( goodName ) )
if( !TextUtils.isEmpty(goodName) && !goodName.equals("#340#"))
{
return goodName;
}

View File

@ -7,142 +7,51 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
import android.view.WindowManager;
import android.widget.TextView;
public class ProgressDialog implements OnClickListener
public class ProgressDialog
{
private static final float PROGRESS_PRECISION = 1000f;
private final Activity mActivity;
private final TextView mTextProgress;
private final TextView mTextSubprogress;
private final TextView mTextMessage;
private final ProgressBar mProgressSubtotal;
private final ProgressBar mProgressTotal;
private AlertDialog mDialog;
private AlertDialog mAbortDialog;
private long mMaxProgress = -1;
private long mMaxSubprogress = -1;
private long mProgress = 0;
private long mSubprogress = 0;
@SuppressLint( "InflateParams" )
public ProgressDialog( Activity activity, CharSequence title,
CharSequence subtitle, CharSequence message, boolean cancelable )
public ProgressDialog( Activity activity, CharSequence title, CharSequence message, boolean cancelable )
{
mActivity = activity;
final LayoutInflater inflater = (LayoutInflater) mActivity
.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
final LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.progress_dialog, null );
mTextProgress = (TextView) layout.findViewById( R.id.textProgress );
mTextSubprogress = (TextView) layout.findViewById( R.id.textSubprogress );
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
DlgTitle.setText(title);
mTextMessage = (TextView) layout.findViewById( R.id.textMessage );
mProgressSubtotal = (ProgressBar) layout.findViewById( R.id.progressSubtotal );
mProgressTotal = (ProgressBar) layout.findViewById( R.id.progressTotal );
// Create main dialog
Builder builder = getBuilder( activity, title, subtitle, message, cancelable, layout );
mTextMessage.setText( message );
Builder builder = new Builder( activity, R.style.Theme_Project64_Dialog_Alert );
builder.setView( layout);
builder.setCancelable( cancelable );
builder.setPositiveButton( null, null );
builder.setNegativeButton( null, null );
mDialog = builder.create();
// Create canceling dialog
subtitle = mActivity.getString( R.string.toast_canceling );
message = mActivity.getString( R.string.toast_canceling );
layout = inflater.inflate( R.layout.progress_dialog, null );
builder = getBuilder( activity, title, subtitle, message, false, layout );
mAbortDialog = builder.create();
mDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
}
public ProgressDialog(ProgressDialog original, Activity activity, CharSequence title,
CharSequence subtitle, CharSequence message, boolean cancelable)
{
this(activity, title, subtitle, message, cancelable);
if(original != null)
{
setMaxProgress(original.mMaxProgress);
setMaxSubprogress(original.mMaxSubprogress);
mProgress = original.mProgress;
mSubprogress = original.mSubprogress;
incrementProgress(0);
incrementSubprogress(0);
mTextProgress.setText(original.mTextProgress.getText());
mTextSubprogress.setText(original.mTextSubprogress.getText());
mTextMessage.setText(original.mTextMessage.getText());
}
}
public void show()
{
mAbortDialog.show();
mDialog.show();
}
public void dismiss()
{
mAbortDialog.dismiss();
mDialog.dismiss();
}
@Override
public void onClick( DialogInterface dlg, int which )
{
if( which == DialogInterface.BUTTON_NEGATIVE)
{
}
}
private Builder getBuilder( Activity activity, CharSequence title, CharSequence subtitle,
CharSequence message, boolean cancelable, View layout )
{
TextView textSubtitle = (TextView) layout.findViewById( R.id.textSubtitle );
TextView textMessage = (TextView) layout.findViewById( R.id.textMessage );
textSubtitle.setText( subtitle );
textMessage.setText( message );
Builder builder = new Builder( activity ).setTitle( title ).setCancelable( false )
.setPositiveButton( null, null ).setView( layout );
if( cancelable )
builder.setNegativeButton( android.R.string.cancel, this );
else
builder.setNegativeButton( null, null );
return builder;
}
public void setText( final CharSequence text )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
mTextProgress.setText( text );
}
} );
}
public void setSubtext( final CharSequence text )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
mTextSubprogress.setText( text );
}
} );
}
public void setMessage( final CharSequence text )
{
mActivity.runOnUiThread( new Runnable()
@ -154,82 +63,4 @@ public class ProgressDialog implements OnClickListener
}
} );
}
public void setMessage( final int resid )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
mTextMessage.setText( resid );
}
} );
}
public void setMaxProgress( final long size )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
mMaxProgress = size;
mProgress = 0;
mProgressTotal.setProgress( 0 );
mProgressTotal.setVisibility( mMaxProgress > 0 ? View.VISIBLE : View.GONE );
}
} );
}
public void setMaxSubprogress( final long size )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
mMaxSubprogress = size;
mSubprogress = 0;
mProgressSubtotal.setProgress( 0 );
mProgressSubtotal.setVisibility( mMaxSubprogress > 0 ? View.VISIBLE : View.GONE );
}
} );
}
public void incrementProgress( final long inc )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
if( mMaxProgress > 0 )
{
mProgress += inc;
int pctProgress = Math.round( ( PROGRESS_PRECISION * mProgress )
/ mMaxProgress );
mProgressTotal.setProgress( pctProgress );
}
}
} );
}
public void incrementSubprogress( final long inc )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
if( mMaxSubprogress > 0 )
{
mSubprogress += inc;
int pctSubprogress = Math.round( ( PROGRESS_PRECISION * mSubprogress )
/ mMaxSubprogress );
mProgressSubtotal.setProgress( pctSubprogress );
}
}
} );
}
}

View File

@ -20,33 +20,30 @@ public class GameSettingsActivity extends AppCompatActivity implements SharedPre
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
// Add the tool bar to the activity (which supports the fancy menu/arrow animation)
Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
toolbar.setTitle( getString(R.string.settings_title) );
setSupportActionBar( toolbar );
ActionBar actionbar = getSupportActionBar();
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setTitle(getString(R.string.game_settings_title));
if (AndroidDevice.IS_ICE_CREAM_SANDWICH)
{
ActionBar actionbar = getSupportActionBar();
actionbar.setHomeButtonEnabled(true);
actionbar.setDisplayHomeAsUpEnabled(true);
}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.edit().clear()
.putString("Game_CpuType",String.valueOf(NativeExports.SettingsLoadDword(SettingsID.Game_CpuType.toString())))
.putBoolean("Game_BlockLinking",NativeExports.SettingsLoadBool(SettingsID.Game_BlockLinking.toString()))
.apply();
.apply();
sharedPrefs.registerOnSharedPreferenceChangeListener(this);
if (savedInstanceState == null)
{
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_placeholder, new GameSettingsFragment()).commit();
}
}
@Override
protected void onStop()
{
@ -54,11 +51,11 @@ public class GameSettingsActivity extends AppCompatActivity implements SharedPre
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
switch (item.getItemId())
{
case android.R.id.home:
if (!getSupportFragmentManager().popBackStackImmediate())

View File

@ -0,0 +1,139 @@
package emu.project64.settings;
import emu.project64.R;
import emu.project64.jni.NativeExports;
import emu.project64.jni.SettingsID;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.text.TextUtils;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.core.content.res.TypedArrayUtils;
import androidx.preference.Preference;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class ListPreference extends Preference {
private CharSequence[] mEntries;
private CharSequence[] mEntryValues;
private CharSequence[] mEntriesSubtitles;
private String mValue;
private String mTitle;
private int mValueIndex;
private boolean mValueSet;
public ListPreference(Context context, AttributeSet attrs)
{
super(context, attrs, getAttr(context, R.attr.ListPreferenceStyle, android.R.attr.preferenceStyle));
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ListPreference);
mEntries = a.getTextArray(R.styleable.ListPreference_entries);
mEntryValues = a.getTextArray(R.styleable.ListPreference_entryValues);
mTitle = String.valueOf(getTitle());
mValueIndex = 0;
a.recycle();
updateSummary();
}
@Override
protected void onClick()
{
String[] mEntriesString = new String[mEntries.length];
int i=0;
for(CharSequence ch: mEntries)
{
mEntriesString[i++] = ch.toString();
}
final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.dialog_menu, null );
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getContext(),R.style.Theme_Project64_Dialog_Alert));
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
DlgTitle.setText(mTitle);
ListView ListOptions = (ListView)layout.findViewById(R.id.list_options);
ListAdapter adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_single_choice,mEntriesString);
ListOptions.setAdapter(adapter);
ListOptions.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
ListOptions.setItemChecked(mValueIndex,true);
builder.setView( layout);
builder.setPositiveButton( null, null );
builder.setNegativeButton( null, null );
AlertDialog dialog = builder.create();
ListOptions.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView parent, View view, int position, long id)
{
setValueIndex(position);
dialog.dismiss();
}
});
dialog.show();
}
private void updateSummary()
{
if (mValueIndex < 0)
{
return;
}
setSummary(mEntries[mValueIndex].toString());
}
private void setValueIndex(int index)
{
String value = mEntryValues[index].toString();
final boolean changed = !TextUtils.equals(mValue, value);
if (changed || !mValueSet)
{
mValueIndex = index;
mValue = value;
mValueSet = true;
persistString(value);
if (changed)
{
notifyChanged();
}
updateSummary();
}
}
private static int getAttr(Context context, int attr, int fallbackAttr)
{
TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(attr, value, true);
if (value.resourceId != 0)
{
return attr;
}
return fallbackAttr;
}
@Override
protected void onSetInitialValue(Object defaultValue)
{
if (getSharedPreferences().contains(getKey()))
{
String Value = getPersistedString( Integer.toString(mValueIndex));
for (int i = 0, n = mEntryValues.length; i < n; i++)
{
if (mEntryValues[i].equals(Value))
{
mValueIndex = i;
updateSummary();
}
}
}
}
}

View File

@ -6,7 +6,6 @@ import emu.project64.jni.NativeExports;
import emu.project64.jni.SettingsID;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import androidx.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatActivity;

View File

@ -0,0 +1,24 @@
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid
android:color="@android:color/white" >
</solid>
<stroke
android:width="5dp"
android:color="@color/colorPrimary" />
<padding
android:left="12dp"
android:top="12dp"
android:right="12dp"
android:bottom="12dp" >
</padding>
<corners
android:radius="15dp" >
</corners>
</shape>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/border"
>
<TextView
android:id="@+id/dlg_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:paddingBottom="16dp"
/>
<ListView
android:id="@+id/list_options"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@ -2,65 +2,38 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="16dp" >
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/border"
>
<ProgressBar
android:id="@+id/circleAnimation"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/dlg_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:paddingBottom="16dp"
/>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="10dp"
tools:ignore="RtlHardcoded" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="RtlHardcoded">
<TextView
android:id="@+id/textSubtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ProgressBar
android:id="@+id/circleAnimation"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
<ProgressBar
android:id="@+id/progressTotal"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:visibility="gone" />
<ProgressBar
android:id="@+id/progressSubtotal"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="1000"
android:visibility="gone" />
<TextView
android:id="@+id/textSubprogress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<TextView
android:id="@+id/textMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:paddingLeft="16dp"
android:paddingRight="16dp" />
</LinearLayout>
</LinearLayout>

View File

@ -45,6 +45,7 @@
<string name="reset_summary">Restore default settings</string>
<string name="reset_title">Reset</string>
<string name="settings_title">Settings</string>
<string name="game_settings_title">Game Settings</string>
<string name="preferences">Preferences</string>
<string name="displayFps_title">Framerate</string>
<string name="displayFps_summary">Display FPS on screen</string>

View File

@ -4,7 +4,6 @@
xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.Project64" parent="@android:style/Theme">
<item name="android:alertDialogTheme">@style/Theme.Project64.Dialog</item>
</style>
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7" />
@ -61,6 +60,10 @@
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.ListPreference" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.PreferenceLogLevel" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
</style>
@ -80,7 +83,7 @@
<item name="preferenceCategoryStyle">@style/Theme.Project64.PreferenceCategory</item>
<item name="checkBoxPreferenceStyle">@style/Theme.Project64.PreferenceCheckBox</item>
<item name="LogLevelPreferenceStyle">@style/Theme.Project64.PreferenceLogLevel</item>
<item name="ListPreferenceStyle">@style/Theme.Project64.PreferenceList</item>
<item name="ListPreferenceStyle">@style/Theme.Project64.PreferenceNoIcon</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="android:textSize">18sp</item>
@ -92,6 +95,23 @@
<item name="android:textColor">@color/TextColor</item>
</style>
<style name="Theme.Project64.Dialog.Title">
<item name="android:background">@color/white</item>
<item name="android:textColor">@color/grey700</item>
<item name="android:textSize">30sp</item>
</style>
<style name="Theme.Project64.Dialog.Alert" parent="Base.Theme.AppCompat.Dialog.Alert">
<item name="android:windowBackground">#00FF00</item>
<item name="android:windowTitleStyle">@style/Theme.Project64.Dialog.Title</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:dividerHorizontal">@null</item>
<item name="android:dividerVertical">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:padding">0dp</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="btnMappable" parent="@android:style/Widget.Button">
<item name="android:layout_width">@dimen/inputMapPreferenceButtonSize</item>
<item name="android:layout_height">@dimen/inputMapPreferenceButtonSize</item>