Android: Multiple improvements
- Save/resume state when closing/starting. - Error reporting - hopefully can figure out why it's not starting on some devices. - Reduce startup latency. - Add more options and descriptions to settings.
This commit is contained in:
parent
1eac603c79
commit
cbbf599e4e
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
|
@ -24,6 +24,10 @@ android {
|
|||
version "3.10.2"
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
defaultConfig {
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
|
|
|
@ -20,7 +20,14 @@ Log_SetChannel(AndroidHostInterface);
|
|||
static JavaVM* s_jvm;
|
||||
static jclass s_AndroidHostInterface_class;
|
||||
static jmethodID s_AndroidHostInterface_constructor;
|
||||
static jfieldID s_AndroidHostInterface_field_nativePointer;
|
||||
static jfieldID s_AndroidHostInterface_field_mNativePointer;
|
||||
static jmethodID s_AndroidHostInterface_method_reportError;
|
||||
static jmethodID s_AndroidHostInterface_method_reportMessage;
|
||||
static jmethodID s_EmulationActivity_method_reportError;
|
||||
static jmethodID s_EmulationActivity_method_reportMessage;
|
||||
static jmethodID s_EmulationActivity_method_onEmulationStarted;
|
||||
static jmethodID s_EmulationActivity_method_onEmulationStopped;
|
||||
static jmethodID s_EmulationActivity_method_onGameTitleChanged;
|
||||
|
||||
namespace AndroidHelpers {
|
||||
// helper for retrieving the current per-thread jni environment
|
||||
|
@ -36,7 +43,7 @@ JNIEnv* GetJNIEnv()
|
|||
AndroidHostInterface* GetNativeClass(JNIEnv* env, jobject obj)
|
||||
{
|
||||
return reinterpret_cast<AndroidHostInterface*>(
|
||||
static_cast<uintptr_t>(env->GetLongField(obj, s_AndroidHostInterface_field_nativePointer)));
|
||||
static_cast<uintptr_t>(env->GetLongField(obj, s_AndroidHostInterface_field_mNativePointer)));
|
||||
}
|
||||
|
||||
std::string JStringToString(JNIEnv* env, jstring str)
|
||||
|
@ -95,12 +102,26 @@ void AndroidHostInterface::RequestExit()
|
|||
|
||||
void AndroidHostInterface::ReportError(const char* message)
|
||||
{
|
||||
HostInterface::ReportError(message);
|
||||
CommonHostInterface::ReportError(message);
|
||||
|
||||
JNIEnv* env = AndroidHelpers::GetJNIEnv();
|
||||
jstring message_jstr = env->NewStringUTF(message);
|
||||
if (m_emulation_activity_object)
|
||||
env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_reportError, message_jstr);
|
||||
else
|
||||
env->CallVoidMethod(m_java_object, s_AndroidHostInterface_method_reportError, message_jstr);
|
||||
}
|
||||
|
||||
void AndroidHostInterface::ReportMessage(const char* message)
|
||||
{
|
||||
HostInterface::ReportMessage(message);
|
||||
CommonHostInterface::ReportMessage(message);
|
||||
|
||||
JNIEnv* env = AndroidHelpers::GetJNIEnv();
|
||||
jstring message_jstr = env->NewStringUTF(message);
|
||||
if (m_emulation_activity_object)
|
||||
env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_reportMessage, message_jstr);
|
||||
else
|
||||
env->CallVoidMethod(m_java_object, s_AndroidHostInterface_method_reportMessage, message_jstr);
|
||||
}
|
||||
|
||||
std::string AndroidHostInterface::GetStringSettingValue(const char* section, const char* key, const char* default_value)
|
||||
|
@ -141,22 +162,17 @@ void AndroidHostInterface::UpdateInputMap()
|
|||
CommonHostInterface::UpdateInputMap(m_settings_interface);
|
||||
}
|
||||
|
||||
bool AndroidHostInterface::StartEmulationThread(ANativeWindow* initial_surface, SystemBootParameters boot_params)
|
||||
bool AndroidHostInterface::StartEmulationThread(jobject emulation_activity, ANativeWindow* initial_surface,
|
||||
SystemBootParameters boot_params, bool resume_state)
|
||||
{
|
||||
Assert(!IsEmulationThreadRunning());
|
||||
|
||||
emulation_activity = AndroidHelpers::GetJNIEnv()->NewGlobalRef(emulation_activity);
|
||||
|
||||
Log_DevPrintf("Starting emulation thread...");
|
||||
m_emulation_thread_stop_request.store(false);
|
||||
m_emulation_thread =
|
||||
std::thread(&AndroidHostInterface::EmulationThreadEntryPoint, this, initial_surface, std::move(boot_params));
|
||||
m_emulation_thread_started.Wait();
|
||||
if (!m_emulation_thread_start_result.load())
|
||||
{
|
||||
m_emulation_thread.join();
|
||||
Log_ErrorPrint("Failed to start emulation in thread");
|
||||
return false;
|
||||
}
|
||||
|
||||
m_emulation_thread = std::thread(&AndroidHostInterface::EmulationThreadEntryPoint, this, emulation_activity,
|
||||
initial_surface, std::move(boot_params), resume_state);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -196,36 +212,48 @@ void AndroidHostInterface::RunOnEmulationThread(std::function<void()> function,
|
|||
m_callback_mutex.unlock();
|
||||
}
|
||||
|
||||
void AndroidHostInterface::EmulationThreadEntryPoint(ANativeWindow* initial_surface, SystemBootParameters boot_params)
|
||||
void AndroidHostInterface::EmulationThreadEntryPoint(jobject emulation_activity, ANativeWindow* initial_surface,
|
||||
SystemBootParameters boot_params, bool resume_state)
|
||||
{
|
||||
JNIEnv* thread_env;
|
||||
if (s_jvm->AttachCurrentThread(&thread_env, nullptr) != JNI_OK)
|
||||
{
|
||||
Log_ErrorPrintf("Failed to attach JNI to thread");
|
||||
m_emulation_thread_start_result.store(false);
|
||||
m_emulation_thread_started.Signal();
|
||||
ReportError("Failed to attach JNI to thread");
|
||||
return;
|
||||
}
|
||||
|
||||
CreateImGuiContext();
|
||||
m_surface = initial_surface;
|
||||
ApplySettings();
|
||||
m_emulation_activity_object = emulation_activity;
|
||||
ApplySettings(true);
|
||||
|
||||
// Boot system.
|
||||
if (!BootSystem(boot_params))
|
||||
bool boot_result = false;
|
||||
if (resume_state)
|
||||
{
|
||||
Log_ErrorPrintf("Failed to boot system on emulation thread (file:%s).", boot_params.filename.c_str());
|
||||
if (boot_params.filename.empty())
|
||||
boot_result = ResumeSystemFromMostRecentState();
|
||||
else
|
||||
boot_result = ResumeSystemFromState(boot_params.filename.c_str(), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
boot_result = BootSystem(boot_params);
|
||||
}
|
||||
|
||||
if (!boot_result)
|
||||
{
|
||||
ReportFormattedError("Failed to boot system on emulation thread (file:%s).", boot_params.filename.c_str());
|
||||
DestroyImGuiContext();
|
||||
m_emulation_thread_start_result.store(false);
|
||||
m_emulation_thread_started.Signal();
|
||||
thread_env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_onEmulationStopped);
|
||||
thread_env->DeleteGlobalRef(m_emulation_activity_object);
|
||||
m_emulation_activity_object = {};
|
||||
s_jvm->DetachCurrentThread();
|
||||
return;
|
||||
}
|
||||
|
||||
// System is ready to go.
|
||||
m_emulation_thread_start_result.store(true);
|
||||
m_emulation_thread_started.Signal();
|
||||
|
||||
thread_env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_onEmulationStarted);
|
||||
while (!m_emulation_thread_stop_request.load())
|
||||
{
|
||||
// run any events
|
||||
|
@ -264,8 +292,11 @@ void AndroidHostInterface::EmulationThreadEntryPoint(ANativeWindow* initial_surf
|
|||
}
|
||||
}
|
||||
|
||||
DestroySystem();
|
||||
thread_env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_onEmulationStopped);
|
||||
PowerOffSystem();
|
||||
DestroyImGuiContext();
|
||||
thread_env->DeleteGlobalRef(m_emulation_activity_object);
|
||||
m_emulation_activity_object = {};
|
||||
s_jvm->DetachCurrentThread();
|
||||
}
|
||||
|
||||
|
@ -308,9 +339,27 @@ void AndroidHostInterface::ReleaseHostDisplay()
|
|||
m_display.reset();
|
||||
}
|
||||
|
||||
void AndroidHostInterface::OnSystemDestroyed()
|
||||
{
|
||||
CommonHostInterface::OnSystemDestroyed();
|
||||
ClearOSDMessages();
|
||||
}
|
||||
|
||||
void AndroidHostInterface::OnRunningGameChanged()
|
||||
{
|
||||
CommonHostInterface::OnRunningGameChanged();
|
||||
|
||||
if (m_emulation_activity_object)
|
||||
{
|
||||
JNIEnv* env = AndroidHelpers::GetJNIEnv();
|
||||
jstring title_string = env->NewStringUTF(System::GetRunningTitle().c_str());
|
||||
env->CallVoidMethod(m_emulation_activity_object, s_EmulationActivity_method_onGameTitleChanged, title_string);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidHostInterface::SurfaceChanged(ANativeWindow* surface, int format, int width, int height)
|
||||
{
|
||||
Log_InfoPrintf("SurfaceChanged %p %d %d %d", surface, format, width, height);
|
||||
ReportFormattedMessage("SurfaceChanged %p %d %d %d", surface, format, width, height);
|
||||
if (m_surface == surface)
|
||||
{
|
||||
if (m_display)
|
||||
|
@ -412,10 +461,11 @@ void AndroidHostInterface::RefreshGameList(bool invalidate_cache, bool invalidat
|
|||
m_game_list->Refresh(invalidate_cache, invalidate_database);
|
||||
}
|
||||
|
||||
void AndroidHostInterface::ApplySettings()
|
||||
void AndroidHostInterface::ApplySettings(bool display_osd_messages)
|
||||
{
|
||||
Settings old_settings = std::move(g_settings);
|
||||
CommonHostInterface::LoadSettings(m_settings_interface);
|
||||
CommonHostInterface::FixIncompatibleSettings(display_osd_messages);
|
||||
CheckForSettingsChanges(old_settings);
|
||||
}
|
||||
|
||||
|
@ -439,10 +489,26 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if ((s_AndroidHostInterface_constructor = env->GetMethodID(s_AndroidHostInterface_class, "<init>", "()V")) ==
|
||||
nullptr ||
|
||||
(s_AndroidHostInterface_field_nativePointer =
|
||||
env->GetFieldID(s_AndroidHostInterface_class, "nativePointer", "J")) == nullptr)
|
||||
jclass emulation_activity_class;
|
||||
if ((s_AndroidHostInterface_constructor =
|
||||
env->GetMethodID(s_AndroidHostInterface_class, "<init>", "(Landroid/content/Context;)V")) == nullptr ||
|
||||
(s_AndroidHostInterface_field_mNativePointer =
|
||||
env->GetFieldID(s_AndroidHostInterface_class, "mNativePointer", "J")) == nullptr ||
|
||||
(s_AndroidHostInterface_method_reportError =
|
||||
env->GetMethodID(s_AndroidHostInterface_class, "reportError", "(Ljava/lang/String;)V")) == nullptr ||
|
||||
(s_AndroidHostInterface_method_reportMessage =
|
||||
env->GetMethodID(s_AndroidHostInterface_class, "reportMessage", "(Ljava/lang/String;)V")) == nullptr ||
|
||||
(emulation_activity_class = env->FindClass("com/github/stenzek/duckstation/EmulationActivity")) == nullptr ||
|
||||
(s_EmulationActivity_method_reportError =
|
||||
env->GetMethodID(emulation_activity_class, "reportError", "(Ljava/lang/String;)V")) == nullptr ||
|
||||
(s_EmulationActivity_method_reportMessage =
|
||||
env->GetMethodID(emulation_activity_class, "reportMessage", "(Ljava/lang/String;)V")) == nullptr ||
|
||||
(s_EmulationActivity_method_onEmulationStarted =
|
||||
env->GetMethodID(emulation_activity_class, "onEmulationStarted", "()V")) == nullptr ||
|
||||
(s_EmulationActivity_method_onEmulationStopped =
|
||||
env->GetMethodID(emulation_activity_class, "onEmulationStopped", "()V")) == nullptr ||
|
||||
(s_EmulationActivity_method_onGameTitleChanged =
|
||||
env->GetMethodID(emulation_activity_class, "onGameTitleChanged", "(Ljava/lang/String;)V")) == nullptr)
|
||||
{
|
||||
Log_ErrorPrint("AndroidHostInterface lookups failed");
|
||||
return -1;
|
||||
|
@ -457,12 +523,13 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
|||
#define DEFINE_JNI_ARGS_METHOD(return_type, name, ...) \
|
||||
extern "C" JNIEXPORT return_type JNICALL Java_com_github_stenzek_duckstation_##name(JNIEnv* env, __VA_ARGS__)
|
||||
|
||||
DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_create, jobject unused, jobject context_object, jstring user_directory)
|
||||
DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_create, jobject unused, jobject context_object,
|
||||
jstring user_directory)
|
||||
{
|
||||
Log::SetDebugOutputParams(true, nullptr, LOGLEVEL_DEBUG);
|
||||
|
||||
// initialize the java side
|
||||
jobject java_obj = env->NewObject(s_AndroidHostInterface_class, s_AndroidHostInterface_constructor);
|
||||
jobject java_obj = env->NewObject(s_AndroidHostInterface_class, s_AndroidHostInterface_constructor, context_object);
|
||||
if (!java_obj)
|
||||
{
|
||||
Log_ErrorPrint("Failed to create Java AndroidHostInterface");
|
||||
|
@ -483,7 +550,7 @@ DEFINE_JNI_ARGS_METHOD(jobject, AndroidHostInterface_create, jobject unused, job
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
env->SetLongField(java_obj, s_AndroidHostInterface_field_nativePointer,
|
||||
env->SetLongField(java_obj, s_AndroidHostInterface_field_mNativePointer,
|
||||
static_cast<long>(reinterpret_cast<uintptr_t>(cpp_obj)));
|
||||
|
||||
return java_obj;
|
||||
|
@ -494,8 +561,8 @@ DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_isEmulationThreadRunning,
|
|||
return AndroidHelpers::GetNativeClass(env, obj)->IsEmulationThreadRunning();
|
||||
}
|
||||
|
||||
DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_startEmulationThread, jobject obj, jobject surface,
|
||||
jstring filename, jstring state_filename)
|
||||
DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_startEmulationThread, jobject obj, jobject emulationActivity,
|
||||
jobject surface, jstring filename, jboolean resume_state, jstring state_filename)
|
||||
{
|
||||
ANativeWindow* native_surface = ANativeWindow_fromSurface(env, surface);
|
||||
if (!native_surface)
|
||||
|
@ -509,7 +576,8 @@ DEFINE_JNI_ARGS_METHOD(jboolean, AndroidHostInterface_startEmulationThread, jobj
|
|||
SystemBootParameters boot_params;
|
||||
boot_params.filename = AndroidHelpers::JStringToString(env, filename);
|
||||
|
||||
return AndroidHelpers::GetNativeClass(env, obj)->StartEmulationThread(native_surface, std::move(boot_params));
|
||||
return AndroidHelpers::GetNativeClass(env, obj)->StartEmulationThread(emulationActivity, native_surface,
|
||||
std::move(boot_params), resume_state);
|
||||
}
|
||||
|
||||
DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_stopEmulationThread, jobject obj)
|
||||
|
@ -526,7 +594,8 @@ DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_surfaceChanged, jobject obj, j
|
|||
|
||||
AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
|
||||
hi->RunOnEmulationThread(
|
||||
[hi, native_surface, format, width, height]() { hi->SurfaceChanged(native_surface, format, width, height); }, true);
|
||||
[hi, native_surface, format, width, height]() { hi->SurfaceChanged(native_surface, format, width, height); },
|
||||
false);
|
||||
}
|
||||
|
||||
DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_setControllerType, jobject obj, jint index, jstring controller_type)
|
||||
|
@ -629,11 +698,11 @@ DEFINE_JNI_ARGS_METHOD(void, AndroidHostInterface_applySettings, jobject obj)
|
|||
AndroidHostInterface* hi = AndroidHelpers::GetNativeClass(env, obj);
|
||||
if (hi->IsEmulationThreadRunning())
|
||||
{
|
||||
hi->RunOnEmulationThread([hi]() { hi->ApplySettings(); });
|
||||
hi->RunOnEmulationThread([hi]() { hi->ApplySettings(false); });
|
||||
}
|
||||
else
|
||||
{
|
||||
hi->ApplySettings();
|
||||
hi->ApplySettings(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,8 @@ public:
|
|||
float GetFloatSettingValue(const char* section, const char* key, float default_value = 0.0f) override;
|
||||
|
||||
bool IsEmulationThreadRunning() const { return m_emulation_thread.joinable(); }
|
||||
bool StartEmulationThread(ANativeWindow* initial_surface, SystemBootParameters boot_params);
|
||||
bool StartEmulationThread(jobject emulation_activity, ANativeWindow* initial_surface,
|
||||
SystemBootParameters boot_params, bool resume_state);
|
||||
void RunOnEmulationThread(std::function<void()> function, bool blocking = false);
|
||||
void StopEmulationThread();
|
||||
|
||||
|
@ -46,7 +47,7 @@ public:
|
|||
void SetControllerAxisState(u32 index, s32 button_code, float value);
|
||||
|
||||
void RefreshGameList(bool invalidate_cache, bool invalidate_database);
|
||||
void ApplySettings();
|
||||
void ApplySettings(bool display_osd_messages);
|
||||
|
||||
protected:
|
||||
void SetUserDirectory() override;
|
||||
|
@ -56,13 +57,18 @@ protected:
|
|||
bool AcquireHostDisplay() override;
|
||||
void ReleaseHostDisplay() override;
|
||||
|
||||
void OnSystemDestroyed() override;
|
||||
void OnRunningGameChanged() override;
|
||||
|
||||
private:
|
||||
void EmulationThreadEntryPoint(ANativeWindow* initial_surface, SystemBootParameters boot_params);
|
||||
void EmulationThreadEntryPoint(jobject emulation_activity, ANativeWindow* initial_surface,
|
||||
SystemBootParameters boot_params, bool resume_state);
|
||||
|
||||
void CreateImGuiContext();
|
||||
void DestroyImGuiContext();
|
||||
|
||||
jobject m_java_object = {};
|
||||
jobject m_emulation_activity_object = {};
|
||||
|
||||
AndroidSettingsInterface m_settings_interface;
|
||||
|
||||
|
@ -73,8 +79,6 @@ private:
|
|||
|
||||
std::thread m_emulation_thread;
|
||||
std::atomic_bool m_emulation_thread_stop_request{false};
|
||||
std::atomic_bool m_emulation_thread_start_result{false};
|
||||
Common::Event m_emulation_thread_started;
|
||||
};
|
||||
|
||||
namespace AndroidHelpers {
|
||||
|
|
|
@ -4,37 +4,57 @@ import android.content.Context;
|
|||
import android.os.Environment;
|
||||
import android.util.Log;
|
||||
import android.view.Surface;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class AndroidHostInterface
|
||||
{
|
||||
private long nativePointer;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
public class AndroidHostInterface {
|
||||
private long mNativePointer;
|
||||
private Context mContext;
|
||||
|
||||
static public native AndroidHostInterface create(Context context, String userDirectory);
|
||||
|
||||
public AndroidHostInterface(long nativePointer)
|
||||
{
|
||||
this.nativePointer = nativePointer;
|
||||
public AndroidHostInterface(Context context) {
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
public void reportError(String message) {
|
||||
Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
public void reportMessage(String message) {
|
||||
Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public native boolean isEmulationThreadRunning();
|
||||
public native boolean startEmulationThread(Surface surface, String filename, String state_filename);
|
||||
|
||||
public native boolean startEmulationThread(EmulationActivity emulationActivity, Surface surface, String filename, boolean resumeState, String state_filename);
|
||||
|
||||
public native void stopEmulationThread();
|
||||
|
||||
public native void surfaceChanged(Surface surface, int format, int width, int height);
|
||||
|
||||
// TODO: Find a better place for this.
|
||||
public native void setControllerType(int index, String typeName);
|
||||
|
||||
public native void setControllerButtonState(int index, int buttonCode, boolean pressed);
|
||||
|
||||
public native void setControllerAxisState(int index, int axisCode, float value);
|
||||
|
||||
public static native int getControllerButtonCode(String controllerType, String buttonName);
|
||||
|
||||
public static native int getControllerAxisCode(String controllerType, String axisName);
|
||||
|
||||
public native void refreshGameList(boolean invalidateCache, boolean invalidateDatabase);
|
||||
|
||||
public native GameListEntry[] getGameListEntries();
|
||||
|
||||
public native void resetSystem();
|
||||
|
||||
public native void loadState(boolean global, int slot);
|
||||
|
||||
public native void saveState(boolean global, int slot);
|
||||
|
||||
public native void applySettings();
|
||||
|
||||
static {
|
||||
|
@ -42,6 +62,7 @@ public class AndroidHostInterface
|
|||
}
|
||||
|
||||
static private AndroidHostInterface mInstance;
|
||||
|
||||
static public boolean createInstance(Context context) {
|
||||
// Set user path.
|
||||
String externalStorageDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();
|
||||
|
@ -57,6 +78,7 @@ public class AndroidHostInterface
|
|||
static public boolean hasInstance() {
|
||||
return mInstance != null;
|
||||
}
|
||||
|
||||
static public AndroidHostInterface getInstance() {
|
||||
return mInstance;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.github.stenzek.duckstation;
|
|||
import android.annotation.SuppressLint;
|
||||
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
|
@ -11,14 +12,12 @@ import android.os.Bundle;
|
|||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.View;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.core.app.NavUtils;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
/**
|
||||
|
@ -30,77 +29,69 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
|
|||
* Settings interfaces.
|
||||
*/
|
||||
SharedPreferences mPreferences;
|
||||
|
||||
private boolean getBooleanSetting(String key, boolean defaultValue) {
|
||||
return mPreferences.getBoolean(key, defaultValue);
|
||||
}
|
||||
|
||||
private void setBooleanSetting(String key, boolean value) {
|
||||
SharedPreferences.Editor editor = mPreferences.edit();
|
||||
editor.putBoolean(key, value);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
private String getStringSetting(String key, String defaultValue) {
|
||||
return mPreferences.getString(key, defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Touchscreen controller overlay
|
||||
*/
|
||||
TouchscreenControllerView mTouchscreenController;
|
||||
private boolean mTouchscreenControllerVisible = true;
|
||||
public void reportError(String message) {
|
||||
Log.e("EmulationActivity", message);
|
||||
|
||||
/**
|
||||
* Whether or not the system UI should be auto-hidden after
|
||||
* {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
|
||||
*/
|
||||
private static final boolean AUTO_HIDE = true;
|
||||
Object lock = new Object();
|
||||
runOnUiThread(() -> {
|
||||
// Toast.makeText(this, message, Toast.LENGTH_LONG);
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle("Error")
|
||||
.setMessage(message)
|
||||
.setPositiveButton("OK", (dialog, button) -> {
|
||||
dialog.dismiss();
|
||||
synchronized (lock) {
|
||||
lock.notify();
|
||||
}
|
||||
})
|
||||
.create()
|
||||
.show();
|
||||
});
|
||||
|
||||
/**
|
||||
* If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
|
||||
* user interaction before hiding the system UI.
|
||||
*/
|
||||
private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
|
||||
|
||||
/**
|
||||
* Some older devices needs a small delay between UI widget updates
|
||||
* and a change of the status and navigation bar.
|
||||
*/
|
||||
private static final int UI_ANIMATION_DELAY = 300;
|
||||
private final Handler mHideHandler = new Handler();
|
||||
private EmulationSurfaceView mContentView;
|
||||
private final Runnable mHidePart2Runnable = new Runnable() {
|
||||
@SuppressLint("InlinedApi")
|
||||
@Override
|
||||
public void run() {
|
||||
// Delayed removal of status and navigation bar
|
||||
|
||||
// Note that some of these constants are new as of API 16 (Jelly Bean)
|
||||
// and API 19 (KitKat). It is safe to use them, as they are inlined
|
||||
// at compile-time and do nothing on earlier devices.
|
||||
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
|
||||
| View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
}
|
||||
};
|
||||
private final Runnable mShowPart2Runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Delayed display of UI elements
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.show();
|
||||
synchronized (lock) {
|
||||
try {
|
||||
lock.wait();
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
};
|
||||
private boolean mVisible;
|
||||
private final Runnable mHideRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
hide();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void reportMessage(String message) {
|
||||
Log.i("EmulationActivity", message);
|
||||
runOnUiThread(() -> {
|
||||
Toast.makeText(this, message, Toast.LENGTH_SHORT);
|
||||
});
|
||||
}
|
||||
|
||||
public void onEmulationStarted() {
|
||||
}
|
||||
|
||||
public void onEmulationStopped() {
|
||||
runOnUiThread(() -> {
|
||||
finish();
|
||||
});
|
||||
}
|
||||
|
||||
public void onGameTitleChanged(String title) {
|
||||
runOnUiThread(() -> {
|
||||
setTitle(title);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void surfaceCreated(SurfaceHolder holder) {
|
||||
|
@ -114,16 +105,11 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
|
|||
return;
|
||||
}
|
||||
|
||||
String bootPath = getIntent().getStringExtra("bootPath");
|
||||
String bootSaveStatePath = getIntent().getStringExtra("bootSaveStatePath");
|
||||
boolean resumeState = getIntent().getBooleanExtra("resumeState", false);
|
||||
final String bootPath = getIntent().getStringExtra("bootPath");
|
||||
final boolean resumeState = getIntent().getBooleanExtra("resumeState", false);
|
||||
final String bootSaveStatePath = getIntent().getStringExtra("saveStatePath");
|
||||
|
||||
if (!AndroidHostInterface.getInstance()
|
||||
.startEmulationThread(holder.getSurface(), bootPath, bootSaveStatePath)) {
|
||||
Log.e("EmulationActivity", "Failed to start emulation thread");
|
||||
finishActivity(0);
|
||||
return;
|
||||
}
|
||||
AndroidHostInterface.getInstance().startEmulationThread(this, holder.getSurface(), bootPath, resumeState, bootSaveStatePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -146,14 +132,14 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
|
|||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
|
||||
mVisible = true;
|
||||
mSystemUIVisible = true;
|
||||
mContentView = findViewById(R.id.fullscreen_content);
|
||||
mContentView.getHolder().addCallback(this);
|
||||
mContentView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (mVisible)
|
||||
hide();
|
||||
if (mSystemUIVisible)
|
||||
hideSystemUI();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -173,11 +159,16 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
|
|||
@Override
|
||||
protected void onPostCreate(Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
hideSystemUI();
|
||||
}
|
||||
|
||||
// Trigger the initial hide() shortly after the activity has been
|
||||
// created, to briefly hint to the user that UI controls
|
||||
// are available.
|
||||
delayedHide(100);
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
if (AndroidHostInterface.getInstance().isEmulationThreadRunning()) {
|
||||
AndroidHostInterface.getInstance().stopEmulationThread();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -228,37 +219,79 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
|
|||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (mVisible) {
|
||||
if (mSystemUIVisible) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
show();
|
||||
showSystemUI();
|
||||
}
|
||||
|
||||
private void hide() {
|
||||
/**
|
||||
* Some older devices needs a small delay between UI widget updates
|
||||
* and a change of the status and navigation bar.
|
||||
*/
|
||||
private static final int UI_ANIMATION_DELAY = 300;
|
||||
private final Handler mSystemUIHideHandler = new Handler();
|
||||
private EmulationSurfaceView mContentView;
|
||||
private final Runnable mHidePart2Runnable = new Runnable() {
|
||||
@SuppressLint("InlinedApi")
|
||||
@Override
|
||||
public void run() {
|
||||
// Delayed removal of status and navigation bar
|
||||
|
||||
// Note that some of these constants are new as of API 16 (Jelly Bean)
|
||||
// and API 19 (KitKat). It is safe to use them, as they are inlined
|
||||
// at compile-time and do nothing on earlier devices.
|
||||
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
|
||||
| View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
}
|
||||
};
|
||||
private final Runnable mShowPart2Runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Delayed display of UI elements
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.show();
|
||||
}
|
||||
}
|
||||
};
|
||||
private boolean mSystemUIVisible;
|
||||
private final Runnable mHideRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
hideSystemUI();
|
||||
}
|
||||
};
|
||||
|
||||
private void hideSystemUI() {
|
||||
// Hide UI first
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.hide();
|
||||
}
|
||||
mVisible = false;
|
||||
mSystemUIVisible = false;
|
||||
|
||||
// Schedule a runnable to remove the status and navigation bar after a delay
|
||||
mHideHandler.removeCallbacks(mShowPart2Runnable);
|
||||
mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY);
|
||||
mSystemUIHideHandler.removeCallbacks(mShowPart2Runnable);
|
||||
mSystemUIHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY);
|
||||
}
|
||||
|
||||
@SuppressLint("InlinedApi")
|
||||
private void show() {
|
||||
private void showSystemUI() {
|
||||
// Show the system bar
|
||||
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
|
||||
mVisible = true;
|
||||
mSystemUIVisible = true;
|
||||
|
||||
// Schedule a runnable to display UI elements after a delay
|
||||
mHideHandler.removeCallbacks(mHidePart2Runnable);
|
||||
mHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY);
|
||||
mSystemUIHideHandler.removeCallbacks(mHidePart2Runnable);
|
||||
mSystemUIHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -266,10 +299,16 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
|
|||
* previously scheduled calls.
|
||||
*/
|
||||
private void delayedHide(int delayMillis) {
|
||||
mHideHandler.removeCallbacks(mHideRunnable);
|
||||
mHideHandler.postDelayed(mHideRunnable, delayMillis);
|
||||
mSystemUIHideHandler.removeCallbacks(mHideRunnable);
|
||||
mSystemUIHideHandler.postDelayed(mHideRunnable, delayMillis);
|
||||
}
|
||||
|
||||
/**
|
||||
* Touchscreen controller overlay
|
||||
*/
|
||||
TouchscreenControllerView mTouchscreenController;
|
||||
private boolean mTouchscreenControllerVisible = true;
|
||||
|
||||
private void setTouchscreenControllerVisibility(boolean visible) {
|
||||
mTouchscreenControllerVisible = visible;
|
||||
mTouchscreenController.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
|
||||
|
|
|
@ -17,13 +17,13 @@ import java.lang.reflect.Array;
|
|||
import java.lang.reflect.Method;
|
||||
|
||||
public final class FileUtil {
|
||||
static String TAG="TAG";
|
||||
static String TAG = "TAG";
|
||||
private static final String PRIMARY_VOLUME_NAME = "primary";
|
||||
|
||||
@Nullable
|
||||
public static String getFullPathFromTreeUri(@Nullable final Uri treeUri, Context con) {
|
||||
if (treeUri == null) return null;
|
||||
String volumePath = getVolumePath(getVolumeIdFromTreeUri(treeUri),con);
|
||||
String volumePath = getVolumePath(getVolumeIdFromTreeUri(treeUri), con);
|
||||
if (volumePath == null) return File.separator;
|
||||
if (volumePath.endsWith(File.separator))
|
||||
volumePath = volumePath.substring(0, volumePath.length() - 1);
|
||||
|
@ -37,8 +37,7 @@ public final class FileUtil {
|
|||
return volumePath + documentPath;
|
||||
else
|
||||
return volumePath + File.separator + documentPath;
|
||||
}
|
||||
else return volumePath;
|
||||
} else return volumePath;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -7,14 +7,12 @@ import android.widget.TextView;
|
|||
import androidx.core.content.ContextCompat;
|
||||
|
||||
public class GameListEntry {
|
||||
public enum EntryType
|
||||
{
|
||||
public enum EntryType {
|
||||
Disc,
|
||||
PSExe
|
||||
}
|
||||
|
||||
public enum CompatibilityRating
|
||||
{
|
||||
public enum CompatibilityRating {
|
||||
Unknown,
|
||||
DoesntBoot,
|
||||
CrashesInIntro,
|
||||
|
@ -72,15 +70,21 @@ public class GameListEntry {
|
|||
return mTitle;
|
||||
}
|
||||
|
||||
public String getModifiedTime() { return mModifiedTime; }
|
||||
public String getModifiedTime() {
|
||||
return mModifiedTime;
|
||||
}
|
||||
|
||||
public DiscRegion getRegion() {
|
||||
return mRegion;
|
||||
}
|
||||
|
||||
public EntryType getType() { return mType; }
|
||||
public EntryType getType() {
|
||||
return mType;
|
||||
}
|
||||
|
||||
public CompatibilityRating getCompatibilityRating() { return mCompatibilityRating; }
|
||||
public CompatibilityRating getCompatibilityRating() {
|
||||
return mCompatibilityRating;
|
||||
}
|
||||
|
||||
public void fillView(View view) {
|
||||
((TextView) view.findViewById(R.id.game_list_view_entry_title)).setText(mTitle);
|
||||
|
|
|
@ -28,27 +28,26 @@ import android.view.MenuItem;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.prefs.Preferences;
|
||||
|
||||
import static com.google.android.material.snackbar.Snackbar.make;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
private static final int REQUEST_EXTERNAL_STORAGE_PERMISSIONS = 1;
|
||||
private static final int REQUEST_ADD_DIRECTORY_TO_GAME_LIST = 2;
|
||||
|
||||
private GameList mGameList;
|
||||
private ListView mGameListView;
|
||||
private boolean mHasExternalStoragePermissions = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (!AndroidHostInterface.hasInstance() && !AndroidHostInterface.createInstance(this)) {
|
||||
Log.i("MainActivity", "Failed to create host interface");
|
||||
throw new RuntimeException("Failed to create host interface");
|
||||
}
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
|
@ -93,6 +92,18 @@ public class MainActivity extends AppCompatActivity {
|
|||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
mHasExternalStoragePermissions = checkForExternalStoragePermissions();
|
||||
if (mHasExternalStoragePermissions)
|
||||
completeStartup();
|
||||
}
|
||||
|
||||
private void completeStartup() {
|
||||
if (!AndroidHostInterface.hasInstance() && !AndroidHostInterface.createInstance(this)) {
|
||||
Log.i("MainActivity", "Failed to create host interface");
|
||||
throw new RuntimeException("Failed to create host interface");
|
||||
}
|
||||
|
||||
mGameList.refresh(false, false);
|
||||
}
|
||||
|
||||
|
@ -122,12 +133,17 @@ public class MainActivity extends AppCompatActivity {
|
|||
int id = item.getItemId();
|
||||
|
||||
//noinspection SimplifiableIfStatement
|
||||
if (id == R.id.action_add_game_directory) {
|
||||
if (id == R.id.action_resume) {
|
||||
startEmulation(null, true);
|
||||
} else if (id == R.id.action_start_bios) {
|
||||
startEmulation(null, false);
|
||||
} else if (id == R.id.action_add_game_directory) {
|
||||
startAddGameDirectory();
|
||||
} else if (id == R.id.action_scan_for_new_games) {
|
||||
mGameList.refresh(false, false);
|
||||
} if (id == R.id.action_rescan_all_games) {
|
||||
mGameList.refresh(true, false);
|
||||
}
|
||||
if (id == R.id.action_rescan_all_games) {
|
||||
mGameList.refresh(true, true);
|
||||
}
|
||||
if (id == R.id.action_settings) {
|
||||
Intent intent = new Intent(this, SettingsActivity.class);
|
||||
|
@ -190,19 +206,21 @@ public class MainActivity extends AppCompatActivity {
|
|||
int[] grantResults) {
|
||||
// check that all were successful
|
||||
for (int i = 0; i < grantResults.length; i++) {
|
||||
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
|
||||
Snackbar.make(mGameListView,
|
||||
"External storage permissions are required to start emulation.",
|
||||
Snackbar.LENGTH_LONG);
|
||||
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
|
||||
if (!mHasExternalStoragePermissions) {
|
||||
mHasExternalStoragePermissions = true;
|
||||
completeStartup();
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(this,
|
||||
"External storage permissions are required to use DuckStation.",
|
||||
Toast.LENGTH_LONG);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean startEmulation(String bootPath, boolean resumeState) {
|
||||
if (!checkForExternalStoragePermissions()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Intent intent = new Intent(this, EmulationActivity.class);
|
||||
intent.putExtra("bootPath", bootPath);
|
||||
intent.putExtra("resumeState", resumeState);
|
||||
|
|
|
@ -19,25 +19,24 @@ public class TouchscreenControllerButtonView extends View {
|
|||
private String mButtonName = "";
|
||||
private ButtonStateChangedListener mListener;
|
||||
|
||||
public interface ButtonStateChangedListener
|
||||
{
|
||||
public interface ButtonStateChangedListener {
|
||||
void onButtonStateChanged(TouchscreenControllerButtonView view, boolean pressed);
|
||||
}
|
||||
|
||||
|
||||
public TouchscreenControllerButtonView(Context context) {
|
||||
super(context);
|
||||
init(context,null, 0);
|
||||
init(context, null, 0);
|
||||
}
|
||||
|
||||
public TouchscreenControllerButtonView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init(context,attrs, 0);
|
||||
init(context, attrs, 0);
|
||||
}
|
||||
|
||||
public TouchscreenControllerButtonView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
init(context,attrs, defStyle);
|
||||
init(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
private void init(Context context, AttributeSet attrs, int defStyle) {
|
||||
|
@ -80,15 +79,12 @@ public class TouchscreenControllerButtonView extends View {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event)
|
||||
{
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
final boolean oldState = mPressed;
|
||||
|
||||
switch (event.getAction())
|
||||
{
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
case MotionEvent.ACTION_POINTER_DOWN:
|
||||
{
|
||||
case MotionEvent.ACTION_POINTER_DOWN: {
|
||||
mPressed = true;
|
||||
invalidate();
|
||||
|
||||
|
@ -99,8 +95,7 @@ public class TouchscreenControllerButtonView extends View {
|
|||
}
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_POINTER_UP:
|
||||
{
|
||||
case MotionEvent.ACTION_POINTER_UP: {
|
||||
mPressed = false;
|
||||
invalidate();
|
||||
|
||||
|
@ -114,8 +109,7 @@ public class TouchscreenControllerButtonView extends View {
|
|||
return super.onTouchEvent(event);
|
||||
}
|
||||
|
||||
public boolean isPressed()
|
||||
{
|
||||
public boolean isPressed() {
|
||||
return mPressed;
|
||||
}
|
||||
|
||||
|
@ -127,13 +121,11 @@ public class TouchscreenControllerButtonView extends View {
|
|||
mButtonName = buttonName;
|
||||
}
|
||||
|
||||
public int getButtonCode()
|
||||
{
|
||||
public int getButtonCode() {
|
||||
return mButtonCode;
|
||||
}
|
||||
|
||||
public void setButtonCode(int code)
|
||||
{
|
||||
public void setButtonCode(int code) {
|
||||
mButtonCode = code;
|
||||
}
|
||||
|
||||
|
@ -153,8 +145,7 @@ public class TouchscreenControllerButtonView extends View {
|
|||
mUnpressedDrawable = unpressedDrawable;
|
||||
}
|
||||
|
||||
public void setButtonStateChangedListener(ButtonStateChangedListener listener)
|
||||
{
|
||||
public void setButtonStateChangedListener(ButtonStateChangedListener listener) {
|
||||
mListener = listener;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,9 +50,8 @@ public class TouchscreenControllerView extends FrameLayout implements Touchscree
|
|||
linkButton(view, R.id.controller_button_r2, "R2");
|
||||
}
|
||||
|
||||
private void linkButton(View view, int id, String buttonName)
|
||||
{
|
||||
TouchscreenControllerButtonView buttonView = (TouchscreenControllerButtonView)view.findViewById(id);
|
||||
private void linkButton(View view, int id, String buttonName) {
|
||||
TouchscreenControllerButtonView buttonView = (TouchscreenControllerButtonView) view.findViewById(id);
|
||||
buttonView.setButtonName(buttonName);
|
||||
buttonView.setButtonStateChangedListener(this);
|
||||
|
||||
|
|
|
@ -1,36 +1,70 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
|
||||
<vector android:height="15dp" android:viewportHeight="15"
|
||||
android:viewportWidth="21" android:width="21dp"
|
||||
xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillType="evenOdd" android:pathData="M0,0h21v15h-21z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="1">
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
|
||||
<vector android:height="15dp"
|
||||
android:viewportHeight="15"
|
||||
android:viewportWidth="21"
|
||||
android:width="21dp"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M0,0h21v15h-21z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:endX="10.5" android:endY="15"
|
||||
android:startX="10.5" android:startY="0" android:type="linear">
|
||||
<item android:color="#FFFFFFFF" android:offset="0"/>
|
||||
<item android:color="#FFF0F0F0" android:offset="1"/>
|
||||
<gradient
|
||||
android:endX="10.5"
|
||||
android:endY="15"
|
||||
android:startX="10.5"
|
||||
android:startY="0"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFFFFFFF"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FFF0F0F0"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path android:fillType="evenOdd" android:pathData="M0,0h21v15h-21z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="1">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M0,0h21v15h-21z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:endX="10.5" android:endY="15"
|
||||
android:startX="10.5" android:startY="0" android:type="linear">
|
||||
<item android:color="#FF043CAE" android:offset="0"/>
|
||||
<item android:color="#FF00339A" android:offset="1"/>
|
||||
<gradient
|
||||
android:endX="10.5"
|
||||
android:endY="15"
|
||||
android:startX="10.5"
|
||||
android:startY="0"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FF043CAE"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FF00339A"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path android:fillType="evenOdd"
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M10.5,3L9.7929,3.2071L10,2.5L9.7929,1.7929L10.5,2L11.2071,1.7929L11,2.5L11.2071,3.2071L10.5,3ZM10.5,13L9.7929,13.2071L10,12.5L9.7929,11.7929L10.5,12L11.2071,11.7929L11,12.5L11.2071,13.2071L10.5,13ZM15.5,8L14.7929,8.2071L15,7.5L14.7929,6.7929L15.5,7L16.2071,6.7929L16,7.5L16.2071,8.2071L15.5,8ZM5.5,8L4.7929,8.2071L5,7.5L4.7929,6.7929L5.5,7L6.2071,6.7929L6,7.5L6.2071,8.2071L5.5,8ZM14.8301,5.5L14.123,5.7071L14.3301,5L14.123,4.2929L14.8301,4.5L15.5372,4.2929L15.3301,5L15.5372,5.7071L14.8301,5.5ZM6.1699,10.5L5.4628,10.7071L5.6699,10L5.4628,9.2929L6.1699,9.5L6.877,9.2929L6.6699,10L6.877,10.7071L6.1699,10.5ZM13,3.6699L12.2929,3.877L12.5,3.1699L12.2929,2.4628L13,2.6699L13.7071,2.4628L13.5,3.1699L13.7071,3.877L13,3.6699ZM8,12.3301L7.2929,12.5372L7.5,11.8301L7.2929,11.123L8,11.3301L8.7071,11.123L8.5,11.8301L8.7071,12.5372L8,12.3301ZM14.8301,10.5L14.123,10.7071L14.3301,10L14.123,9.2929L14.8301,9.5L15.5372,9.2929L15.3301,10L15.5372,10.7071L14.8301,10.5ZM6.1699,5.5L5.4628,5.7071L5.6699,5L5.4628,4.2929L6.1699,4.5L6.877,4.2929L6.6699,5L6.877,5.7071L6.1699,5.5ZM13,12.3301L12.2929,12.5372L12.5,11.8301L12.2929,11.123L13,11.3301L13.7071,11.123L13.5,11.8301L13.7071,12.5372L13,12.3301ZM8,3.6699L7.2929,3.877L7.5,3.1699L7.2929,2.4628L8,2.6699L8.7071,2.4628L8.5,3.1699L8.7071,3.877L8,3.6699Z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="1">
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:endX="10.5" android:endY="13.2071"
|
||||
android:startX="10.5" android:startY="1.7929" android:type="linear">
|
||||
<item android:color="#FFFFD429" android:offset="0"/>
|
||||
<item android:color="#FFFFCC00" android:offset="1"/>
|
||||
<gradient
|
||||
android:endX="10.5"
|
||||
android:endY="13.2071"
|
||||
android:startX="10.5"
|
||||
android:startY="1.7929"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFFFD429"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FFFFCC00"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
|
|
@ -1,26 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_hp.xml -->
|
||||
<vector android:height="15dp" android:viewportHeight="15"
|
||||
android:viewportWidth="21" android:width="21dp"
|
||||
xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillType="evenOdd" android:pathData="M0,0h21v15h-21z"
|
||||
android:strokeColor="#00000000" android:strokeWidth="1">
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_hp.xml -->
|
||||
<vector android:height="15dp"
|
||||
android:viewportHeight="15"
|
||||
android:viewportWidth="21"
|
||||
android:width="21dp"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M0,0h21v15h-21z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:endX="10.5" android:endY="15"
|
||||
android:startX="10.5" android:startY="0" android:type="linear">
|
||||
<item android:color="#FFFFFFFF" android:offset="0"/>
|
||||
<item android:color="#FFF0F0F0" android:offset="1"/>
|
||||
<gradient
|
||||
android:endX="10.5"
|
||||
android:endY="15"
|
||||
android:startX="10.5"
|
||||
android:startY="0"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFFFFFFF"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FFF0F0F0"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path android:fillType="evenOdd"
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M10.5,7.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
|
||||
android:strokeColor="#00000000" android:strokeWidth="1">
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:endX="10.5" android:endY="12"
|
||||
android:startX="10.5" android:startY="3" android:type="linear">
|
||||
<item android:color="#FFD81441" android:offset="0"/>
|
||||
<item android:color="#FFBB0831" android:offset="1"/>
|
||||
<gradient
|
||||
android:endX="10.5"
|
||||
android:endY="12"
|
||||
android:startX="10.5"
|
||||
android:startY="3"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#FFD81441"
|
||||
android:offset="0" />
|
||||
<item
|
||||
android:color="#FFBB0831"
|
||||
android:offset="1" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- https://raw.githubusercontent.com/Shusshu/android-flags/master/flags/src/main/res/drawable/flag_us2.xml -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="21dp"
|
||||
android:height="21dp"
|
||||
|
@ -48,32 +47,56 @@
|
|||
android:fillColor="#192f5d"
|
||||
android:pathData="M0 0h5.2v7h-5.2Z" />
|
||||
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="4.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="4.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
|
@ -81,32 +104,56 @@
|
|||
|
||||
|
||||
<group android:translateY="1.4">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="4.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="4.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
|
@ -115,32 +162,56 @@
|
|||
|
||||
|
||||
<group android:translateY="2.9">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="4.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="4.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
|
@ -149,32 +220,56 @@
|
|||
|
||||
|
||||
<group android:translateY="4.3">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="4.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="4.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
|
@ -183,32 +278,56 @@
|
|||
|
||||
|
||||
<group android:translateY="5.6">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="4.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="4.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
|
@ -217,112 +336,200 @@
|
|||
|
||||
<!-- Odd stars -->
|
||||
|
||||
<group android:translateY="0.7" android:translateX="0.4">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateY="0.7"
|
||||
android:translateX="0.4">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<group android:translateY="2.1" android:translateX="0.4">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateY="2.1"
|
||||
android:translateX="0.4">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<group android:translateY="3.6" android:translateX="0.4">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateY="3.6"
|
||||
android:translateX="0.4">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<group android:translateY="5.0" android:translateX="0.4">
|
||||
<group android:translateX="0.2" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateY="5.0"
|
||||
android:translateX="0.4">
|
||||
<group
|
||||
android:translateX="0.2"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.0" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.0"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="1.8" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="1.8"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="2.6" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="2.6"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
</group>
|
||||
<group android:translateX="3.4" android:translateY="0.2" android:scaleX="0.009" android:scaleY="0.012">
|
||||
<group
|
||||
android:translateX="3.4"
|
||||
android:translateY="0.2"
|
||||
android:scaleX="0.009"
|
||||
android:scaleY="0.012">
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M 48,54 L 31,42 15,54 21,35 6,23 25,23 32,4 40,23 58,23 42,35 z" />
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M8,5v14l11,-7z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M8,5v14l11,-7z" />
|
||||
</vector>
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-10.5833,0a10.5833,10.5833 0,1 1,21.1667 0a10.5833,10.5833 0,1 1,-21.1667 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ff0000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-10.5833,0a10.5833,10.5833 0,1 1,21.1667 0a10.5833,10.5833 0,1 1,-21.1667 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ff0000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-10.5833,0a10.5833,10.5833 0,1 1,21.1667 0a10.5833,10.5833 0,1 1,-21.1667 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ff0000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-10.5833,0a10.5833,10.5833 0,1 1,21.1667 0a10.5833,10.5833 0,1 1,-21.1667 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ff0000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,25 +3,25 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="m5.2917,5.2917 l15.875,15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m5.2917,21.1667 l15.875,-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="m5.2917,5.2917 l15.875,15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt" />
|
||||
<path
|
||||
android:pathData="m5.2917,21.1667 l15.875,-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,25 +3,25 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="m5.2917,5.2917 l15.875,15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m5.2917,21.1667 l15.875,-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="m5.2917,5.2917 l15.875,15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt" />
|
||||
<path
|
||||
android:pathData="m5.2917,21.1667 l15.875,-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#008080"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m5.2917,10.5833 l7.9375,-7.9375 7.9375,7.9375v14.5521L5.2917,25.1354Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m5.2917,10.5833 l7.9375,-7.9375 7.9375,7.9375v14.5521L5.2917,25.1354Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m5.2917,10.5833 l7.9375,-7.9375 7.9375,7.9375v14.5521L5.2917,25.1354Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m5.2917,10.5833 l7.9375,-7.9375 7.9375,7.9375v14.5521L5.2917,25.1354Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="m13.8028,8.6007h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
<path
|
||||
android:pathData="m13.8028,8.6007h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="m13.8028,8.6007h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
<path
|
||||
android:pathData="m13.8028,8.6007h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="m14.2816,8.6007h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
<path
|
||||
android:pathData="m14.2816,8.6007h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="m14.2816,8.6007h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m9.6928,4.0428h0.6959v4.5579h2.5046v0.5857L9.6928,9.1863Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
<path
|
||||
android:pathData="m14.2816,8.6007h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m16.5365,5.9531 l7.9375,7.9375 -7.9375,7.9375L1.9844,21.8281v-15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m16.5365,5.9531 l7.9375,7.9375 -7.9375,7.9375L1.9844,21.8281v-15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m16.5365,5.9531 l7.9375,7.9375 -7.9375,7.9375L1.9844,21.8281v-15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m16.5365,5.9531 l7.9375,7.9375 -7.9375,7.9375L1.9844,21.8281v-15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="m14.3195,8.6472h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
<path
|
||||
android:pathData="m14.3195,8.6472h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="m14.3195,8.6472h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
<path
|
||||
android:pathData="m14.3195,8.6472h1.1369v-3.924l-1.2368,0.2481v-0.6339l1.2299,-0.248h0.6959v4.5579h1.1369v0.5857h-2.9628z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="m14.7984,8.6472h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
<path
|
||||
android:pathData="m14.7984,8.6472h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:fillAlpha="0" />
|
||||
</vector>
|
||||
|
|
|
@ -3,26 +3,26 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="m14.7984,8.6472h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="M0.6615,0.6614L25.7969,0.6614v11.9063L0.6615,12.5677Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="round" />
|
||||
<path
|
||||
android:pathData="m11.6703,6.8213q0.2239,0.0758 0.4341,0.3238 0.2136,0.248 0.4272,0.6821l0.7062,1.4056h-0.7476l-0.658,-1.3195q-0.2549,-0.5168 -0.4961,-0.6856 -0.2377,-0.1688 -0.6511,-0.1688L9.927,7.059v2.1739L9.2311,9.2329v-5.1435h1.571q0.8819,0 1.316,0.3686 0.4341,0.3686 0.4341,1.1128 0,0.4858 -0.2274,0.8062 -0.2239,0.3204 -0.6546,0.4444zM9.927,4.6612v1.8259h0.8751q0.503,0 0.7579,-0.2308 0.2584,-0.2343 0.2584,-0.6856 0,-0.4513 -0.2584,-0.6787 -0.2549,-0.2308 -0.7579,-0.2308z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
<path
|
||||
android:pathData="m14.7984,8.6472h2.4288v0.5857h-3.2659v-0.5857q0.3962,-0.41 1.0783,-1.099 0.6856,-0.6925 0.8613,-0.8923 0.3342,-0.3755 0.4651,-0.6339 0.1344,-0.2618 0.1344,-0.5133 0,-0.41 -0.2894,-0.6683 -0.2859,-0.2584 -0.7476,-0.2584 -0.3273,0 -0.6925,0.1137 -0.3617,0.1137 -0.7751,0.3445v-0.7028q0.4203,-0.1688 0.7855,-0.2549 0.3652,-0.0861 0.6683,-0.0861 0.7993,0 1.2747,0.3996 0.4754,0.3996 0.4754,1.068 0,0.3169 -0.1206,0.6029 -0.1171,0.2825 -0.4306,0.6683 -0.0861,0.0999 -0.5478,0.5788 -0.4616,0.4754 -1.3022,1.3333z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeWidth="0.13229167"
|
||||
android:fillColor="#1a1a1a"
|
||||
android:strokeColor="#000000"
|
||||
android:fillAlpha="1" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m9.9219,21.8281 l-7.9375,-7.9375 7.9375,-7.9375L24.474,5.9531v15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m9.9219,21.8281 l-7.9375,-7.9375 7.9375,-7.9375L24.474,5.9531v15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m9.9219,21.8281 l-7.9375,-7.9375 7.9375,-7.9375L24.474,5.9531v15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m9.9219,21.8281 l-7.9375,-7.9375 7.9375,-7.9375L24.474,5.9531v15.875z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063L25.7969,12.5677v-11.9063z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063L25.7969,12.5677v-11.9063z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063L25.7969,12.5677v-11.9063z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063L25.7969,12.5677v-11.9063z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,18 +3,18 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M5.2917,5.2917L21.1667,5.2917v15.875L5.2917,21.1667v-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeColor="#ff00ff"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="M5.2917,5.2917L21.1667,5.2917v15.875L5.2917,21.1667v-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeColor="#ff00ff"
|
||||
android:strokeLineCap="square" />
|
||||
</vector>
|
||||
|
|
|
@ -3,18 +3,18 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M5.2917,5.2917L21.1667,5.2917v15.875L5.2917,21.1667v-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeColor="#ff00ff"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="M5.2917,5.2917L21.1667,5.2917v15.875L5.2917,21.1667v-15.875"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.05833333"
|
||||
android:fillColor="#00000000"
|
||||
android:fillAlpha="1"
|
||||
android:strokeColor="#ff00ff"
|
||||
android:strokeLineCap="square" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063l25.1354,-5.9531z"
|
||||
android:strokeAlpha="0.94117647"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.265"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063l25.1354,-5.9531z"
|
||||
android:strokeAlpha="0.94117647"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.265"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="50dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="13.229165">
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063l25.1354,-5.9531z"
|
||||
android:strokeAlpha="0.94117647"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.265"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m0.6615,0.6614v11.9063l25.1354,-5.9531z"
|
||||
android:strokeAlpha="0.94117647"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.265"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#6e6e6f"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M5.2917,19.0398L21.1667,19.0398l-7.9375,-13.7481 -7.8548,13.6049"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#00ff00"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="M5.2917,19.0398L21.1667,19.0398l-7.9375,-13.7481 -7.8548,13.6049"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#00ff00"
|
||||
android:strokeLineCap="round" />
|
||||
</vector>
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.45833">
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M5.2917,19.0398L21.1667,19.0398l-7.9375,-13.7481 -7.8548,13.6049"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#00ff00"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M13.2292,13.2292m-12.5677,0a12.5677,12.5677 0,1 1,25.1354 0a12.5677,12.5677 0,1 1,-25.1354 0"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#ffffff" />
|
||||
<path
|
||||
android:pathData="M5.2917,19.0398L21.1667,19.0398l-7.9375,-13.7481 -7.8548,13.6049"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="1.05833328"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#00ff00"
|
||||
android:strokeLineCap="round" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m21.1667,17.1979 l-7.9375,7.9375 -7.9375,-7.9375L5.2917,2.6458L21.1667,2.6458Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m21.1667,17.1979 l-7.9375,7.9375 -7.9375,-7.9375L5.2917,2.6458L21.1667,2.6458Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
android:height="100dp"
|
||||
android:viewportWidth="26.458332"
|
||||
android:viewportHeight="26.458332">
|
||||
<path
|
||||
android:pathData="m21.1667,17.1979 l-7.9375,7.9375 -7.9375,-7.9375L5.2917,2.6458L21.1667,2.6458Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m21.1667,17.1979 l-7.9375,7.9375 -7.9375,-7.9375L5.2917,2.6458L21.1667,2.6458Z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.26458332"
|
||||
android:fillColor="#4d4d4d"
|
||||
android:strokeColor="#e6e6e6"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -4,44 +4,42 @@
|
|||
android:height="48dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48">
|
||||
<path
|
||||
android:pathData="M44.1942,41.636A19.6222,6.1872 0,1 1,4.9497 41.636A19.6222,6.1872 0,1 1,44.1942 41.636z"
|
||||
android:strokeAlpha="0.40909088"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.40909088"
|
||||
android:strokeLineCap="butt">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M23.25,0.4688C22.7846,0.5006 22.3322,0.5727 21.875,0.625L21.8438,0.625L20.75,6.5938C18.9673,6.9997 17.2901,7.6887 15.7813,8.625L10.875,5.0938C9.5487,6.1234 8.3418,7.3243 7.2813,8.625L10.6875,13.5938C9.6533,15.1743 8.8755,16.979 8.4375,18.875C8.4374,18.884 8.4374,18.9047 8.4375,18.9063L2.5,19.8438C2.3914,20.7304 2.3438,21.6467 2.3438,22.5625C2.3438,23.3118 2.3644,24.0511 2.4375,24.7813L8.375,25.8438C8.7973,27.9056 9.5995,29.8313 10.7188,31.5313L7.1875,36.375C8.1988,37.6305 9.3664,38.7736 10.625,39.7813L15.625,36.3438C17.3724,37.4585 19.3231,38.2401 21.4375,38.625L22.375,44.5313C23.0412,44.5919 23.7243,44.5938 24.4063,44.5938C25.3689,44.5938 26.2885,44.5573 27.2188,44.4375L28.3438,38.4063C30.3513,37.9067 32.2372,37.04 33.875,35.875L38.6875,39.375C39.9355,38.3132 41.0768,37.0927 42.0625,35.7813L38.5625,30.7188C39.5104,29.0818 40.1671,27.2756 40.5,25.3438L46.4063,24.4063C46.458,23.7899 46.4688,23.1922 46.4688,22.5625C46.4688,21.4683 46.3416,20.3954 46.1875,19.3438L40.1875,18.25C39.7173,16.5138 38.9458,14.8939 37.9688,13.4375L41.5,8.5938C40.4054,7.2551 39.1568,6.0186 37.7813,4.9688L32.6875,8.4688C31.2235,7.6029 29.648,6.9386 27.9375,6.5625L27,0.625C26.1467,0.5246 25.2864,0.4688 24.4063,0.4688C24.1684,0.4688 23.9236,0.4613 23.6875,0.4688C23.5724,0.4724 23.4585,0.4621 23.3438,0.4688C23.3127,0.4706 23.281,0.4666 23.25,0.4688zM24.0625,15.6563C24.1767,15.6505 24.2907,15.6563 24.4063,15.6563C28.1054,15.6563 31.125,18.6759 31.125,22.375C31.125,26.0741 28.1054,29.0625 24.4063,29.0625C20.7071,29.0625 17.7188,26.0741 17.7188,22.375C17.7188,18.7915 20.5233,15.8358 24.0625,15.6563z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#808080"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M32.13,22.3608A7.7197,7.7197 45,1 1,16.6905 22.3608A7.7197,7.7197 135,1 1,32.13 22.3608z"
|
||||
android:strokeAlpha="0.64772725"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.64875567"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.64772725"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="M22.5578,1.6501L21.6796,7.4291C20.0086,7.8097 16.9349,8.9735 15.5206,9.8511L10.8486,6.3639C9.6054,7.3291 9.5201,7.3945 8.5261,8.6137L11.9041,13.6236C10.9347,15.1051 9.7703,17.7451 9.3522,19.6317C9.3522,19.6317 3.4328,20.6296 3.4328,20.6296C3.3311,21.4606 3.38,23.2394 3.4485,23.9238L9.1027,24.9423C9.4985,26.875 10.9797,29.9859 12.0289,31.5794L8.4533,36.3034C9.4012,37.4803 9.591,37.5879 10.7707,38.5324L15.5519,35.0296C17.1898,36.0745 20.4409,37.3455 22.4228,37.7063L23.2075,43.4125C23.8319,43.4693 25.557,43.6288 26.4289,43.5165L27.3071,37.5764C29.1889,37.1081 32.4403,35.7734 33.9754,34.6815L38.7515,38.1323C39.9213,37.137 39.9318,36.9871 40.8557,35.7578L37.3165,30.7271C38.205,29.1927 39.3537,26.1918 39.6657,24.381L45.4604,23.4196C45.5089,22.8419 45.5113,21.2308 45.3669,20.245L39.4631,19.2264C39.0224,17.599 37.5099,14.6665 36.5941,13.3013L40.3464,8.5773C39.3204,7.3226 38.939,7.1504 37.6496,6.1664L32.7073,9.7056C31.335,8.894 28.5987,7.6569 26.9953,7.3044L26.1223,1.6501C25.3224,1.556 23.0149,1.5978 22.5578,1.6501z"
|
||||
android:strokeAlpha="0.34659088"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.9999997"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.34659088"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="M44.1942,41.636A19.6222,6.1872 0,1 1,4.9497 41.636A19.6222,6.1872 0,1 1,44.1942 41.636z"
|
||||
android:strokeAlpha="0.40909088"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.40909088"
|
||||
android:strokeLineCap="butt"></path>
|
||||
<path
|
||||
android:pathData="M23.25,0.4688C22.7846,0.5006 22.3322,0.5727 21.875,0.625L21.8438,0.625L20.75,6.5938C18.9673,6.9997 17.2901,7.6887 15.7813,8.625L10.875,5.0938C9.5487,6.1234 8.3418,7.3243 7.2813,8.625L10.6875,13.5938C9.6533,15.1743 8.8755,16.979 8.4375,18.875C8.4374,18.884 8.4374,18.9047 8.4375,18.9063L2.5,19.8438C2.3914,20.7304 2.3438,21.6467 2.3438,22.5625C2.3438,23.3118 2.3644,24.0511 2.4375,24.7813L8.375,25.8438C8.7973,27.9056 9.5995,29.8313 10.7188,31.5313L7.1875,36.375C8.1988,37.6305 9.3664,38.7736 10.625,39.7813L15.625,36.3438C17.3724,37.4585 19.3231,38.2401 21.4375,38.625L22.375,44.5313C23.0412,44.5919 23.7243,44.5938 24.4063,44.5938C25.3689,44.5938 26.2885,44.5573 27.2188,44.4375L28.3438,38.4063C30.3513,37.9067 32.2372,37.04 33.875,35.875L38.6875,39.375C39.9355,38.3132 41.0768,37.0927 42.0625,35.7813L38.5625,30.7188C39.5104,29.0818 40.1671,27.2756 40.5,25.3438L46.4063,24.4063C46.458,23.7899 46.4688,23.1922 46.4688,22.5625C46.4688,21.4683 46.3416,20.3954 46.1875,19.3438L40.1875,18.25C39.7173,16.5138 38.9458,14.8939 37.9688,13.4375L41.5,8.5938C40.4054,7.2551 39.1568,6.0186 37.7813,4.9688L32.6875,8.4688C31.2235,7.6029 29.648,6.9386 27.9375,6.5625L27,0.625C26.1467,0.5246 25.2864,0.4688 24.4063,0.4688C24.1684,0.4688 23.9236,0.4613 23.6875,0.4688C23.5724,0.4724 23.4585,0.4621 23.3438,0.4688C23.3127,0.4706 23.281,0.4666 23.25,0.4688zM24.0625,15.6563C24.1767,15.6505 24.2907,15.6563 24.4063,15.6563C28.1054,15.6563 31.125,18.6759 31.125,22.375C31.125,26.0741 28.1054,29.0625 24.4063,29.0625C20.7071,29.0625 17.7188,26.0741 17.7188,22.375C17.7188,18.7915 20.5233,15.8358 24.0625,15.6563z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#808080"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="butt"></path>
|
||||
<path
|
||||
android:pathData="M32.13,22.3608A7.7197,7.7197 45,1 1,16.6905 22.3608A7.7197,7.7197 135,1 1,32.13 22.3608z"
|
||||
android:strokeAlpha="0.64772725"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.64875567"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.64772725"
|
||||
android:strokeLineCap="butt" />
|
||||
<path
|
||||
android:pathData="M22.5578,1.6501L21.6796,7.4291C20.0086,7.8097 16.9349,8.9735 15.5206,9.8511L10.8486,6.3639C9.6054,7.3291 9.5201,7.3945 8.5261,8.6137L11.9041,13.6236C10.9347,15.1051 9.7703,17.7451 9.3522,19.6317C9.3522,19.6317 3.4328,20.6296 3.4328,20.6296C3.3311,21.4606 3.38,23.2394 3.4485,23.9238L9.1027,24.9423C9.4985,26.875 10.9797,29.9859 12.0289,31.5794L8.4533,36.3034C9.4012,37.4803 9.591,37.5879 10.7707,38.5324L15.5519,35.0296C17.1898,36.0745 20.4409,37.3455 22.4228,37.7063L23.2075,43.4125C23.8319,43.4693 25.557,43.6288 26.4289,43.5165L27.3071,37.5764C29.1889,37.1081 32.4403,35.7734 33.9754,34.6815L38.7515,38.1323C39.9213,37.137 39.9318,36.9871 40.8557,35.7578L37.3165,30.7271C38.205,29.1927 39.3537,26.1918 39.6657,24.381L45.4604,23.4196C45.5089,22.8419 45.5113,21.2308 45.3669,20.245L39.4631,19.2264C39.0224,17.599 37.5099,14.6665 36.5941,13.3013L40.3464,8.5773C39.3204,7.3226 38.939,7.1504 37.6496,6.1664L32.7073,9.7056C31.335,8.894 28.5987,7.6569 26.9953,7.3044L26.1223,1.6501C25.3224,1.556 23.0149,1.5978 22.5578,1.6501z"
|
||||
android:strokeAlpha="0.34659088"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.9999997"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.34659088"
|
||||
android:strokeLineCap="butt" />
|
||||
</vector>
|
||||
|
|
|
@ -4,107 +4,94 @@
|
|||
android:height="48dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48">
|
||||
<path
|
||||
android:pathData="M46.9619,41.511A6.0319,22.6274 90,1 1,1.7071 41.511A6.0319,22.6274 90,1 1,46.9619 41.511z"
|
||||
android:strokeAlpha="0.55"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="evenOdd"
|
||||
android:fillAlpha="0.55"
|
||||
android:strokeLineCap="butt">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero">
|
||||
</path>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#808080"
|
||||
android:fillType="nonZero">
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M24.347,14.8958C18.7044,14.8958 14.2428,19.4886 14.2428,25C14.2428,30.6426 18.8356,35.1042 24.347,35.1042C29.9896,35.1042 34.4512,30.5114 34.4512,25C34.4512,19.3574 29.8584,14.8958 24.347,14.8958L24.347,14.8958zM24.347,30.5114C21.3289,30.5114 18.8356,28.0181 18.8356,25C18.8356,21.9819 21.3289,19.4886 24.347,19.4886C27.3651,19.4886 29.8584,21.9819 29.8584,25C29.8584,28.0181 27.3651,30.5114 24.347,30.5114z"
|
||||
android:strokeAlpha="0.10999995"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.10999995"/>
|
||||
<path
|
||||
android:pathData="M29.9221,5.6692L26.3255,19.6639C27.4502,19.9634 28.3497,20.6594 28.9606,21.6224L41.3529,14.0732C38.8176,9.9434 34.7487,6.9051 29.9221,5.6692z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M17.3078,43.7661L22.0431,30.1146C20.9468,29.7236 20.1077,28.956 19.5779,27.946L6.6069,34.4506C8.7939,38.7748 12.5993,42.1375 17.3078,43.7661z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1">
|
||||
</path>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M24.347,5.2024C13.3735,5.2024 4.5494,14.0265 4.5494,25C4.5494,35.9735 13.3735,44.7976 24.347,44.7976C35.3205,44.7976 44.1446,35.9735 44.1446,25C44.1446,14.0265 35.3205,5.2024 24.347,5.2024L24.347,5.2024z"
|
||||
android:strokeAlpha="0.5464481"
|
||||
android:fillColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.5464481">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M30.494,25.019A6.0988,6.0988 0,1 1,18.2964 25.019A6.0988,6.0988 0,1 1,30.494 25.019z"
|
||||
android:strokeAlpha="0.6721311"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.93053865"
|
||||
android:fillColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.21265164"
|
||||
android:strokeLineCap="butt">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.1142857"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.1142857">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.09714284"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.09714284">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.71428573"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.71428573">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.62285715"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.62285715">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.3714286"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.3714286">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.23428573"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.23428573">
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M46.9619,41.511A6.0319,22.6274 90,1 1,1.7071 41.511A6.0319,22.6274 90,1 1,46.9619 41.511z"
|
||||
android:strokeAlpha="0.55"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="evenOdd"
|
||||
android:fillAlpha="0.55"
|
||||
android:strokeLineCap="butt"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"></path>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#808080"
|
||||
android:fillType="nonZero"></path>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M24.347,14.8958C18.7044,14.8958 14.2428,19.4886 14.2428,25C14.2428,30.6426 18.8356,35.1042 24.347,35.1042C29.9896,35.1042 34.4512,30.5114 34.4512,25C34.4512,19.3574 29.8584,14.8958 24.347,14.8958L24.347,14.8958zM24.347,30.5114C21.3289,30.5114 18.8356,28.0181 18.8356,25C18.8356,21.9819 21.3289,19.4886 24.347,19.4886C27.3651,19.4886 29.8584,21.9819 29.8584,25C29.8584,28.0181 27.3651,30.5114 24.347,30.5114z"
|
||||
android:strokeAlpha="0.10999995"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.10999995" />
|
||||
<path
|
||||
android:pathData="M29.9221,5.6692L26.3255,19.6639C27.4502,19.9634 28.3497,20.6594 28.9606,21.6224L41.3529,14.0732C38.8176,9.9434 34.7487,6.9051 29.9221,5.6692z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1"></path>
|
||||
<path
|
||||
android:pathData="M17.3078,43.7661L22.0431,30.1146C20.9468,29.7236 20.1077,28.956 19.5779,27.946L6.6069,34.4506C8.7939,38.7748 12.5993,42.1375 17.3078,43.7661z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1"></path>
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M24.347,5.2024C13.3735,5.2024 4.5494,14.0265 4.5494,25C4.5494,35.9735 13.3735,44.7976 24.347,44.7976C35.3205,44.7976 44.1446,35.9735 44.1446,25C44.1446,14.0265 35.3205,5.2024 24.347,5.2024L24.347,5.2024z"
|
||||
android:strokeAlpha="0.5464481"
|
||||
android:fillColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.5464481"></path>
|
||||
<path
|
||||
android:pathData="M30.494,25.019A6.0988,6.0988 0,1 1,18.2964 25.019A6.0988,6.0988 0,1 1,30.494 25.019z"
|
||||
android:strokeAlpha="0.6721311"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="0.93053865"
|
||||
android:fillColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.21265164"
|
||||
android:strokeLineCap="butt"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.1142857"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.1142857"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.09714284"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.09714284"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.71428573"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.71428573"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.62285715"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.62285715"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.3714286"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.3714286"></path>
|
||||
<path
|
||||
android:pathData="M24.347,4.1667C12.7994,4.1667 3.5137,13.4524 3.5137,25C3.5137,36.5476 12.7994,45.8333 24.347,45.8333C35.8946,45.8333 45.1803,36.5476 45.1803,25C45.1803,13.4524 35.8946,4.1667 24.347,4.1667L24.347,4.1667zM24.347,30C21.6089,30 19.347,27.7381 19.347,25C19.347,22.2619 21.6089,20 24.347,20C27.0851,20 29.347,22.2619 29.347,25C29.347,27.7381 27.0851,30 24.347,30z"
|
||||
android:strokeAlpha="0.23428573"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="0.23428573"></path>
|
||||
</vector>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -12,16 +11,29 @@
|
|||
android:layout_width="match_parent"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView2"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="match_parent"
|
||||
app:srcCompat="@mipmap/ic_launcher_foreground" />
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<include layout="@layout/content_main"/>
|
||||
<include layout="@layout/content_main" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab_resume"
|
||||
|
|
|
@ -15,6 +15,5 @@
|
|||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -3,11 +3,14 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<group android:id="@+id/actions">
|
||||
<item android:id="@+id/reset"
|
||||
<item
|
||||
android:id="@+id/reset"
|
||||
android:title="Reset" />
|
||||
<item android:id="@+id/quick_load"
|
||||
<item
|
||||
android:id="@+id/quick_load"
|
||||
android:title="Quick Load" />
|
||||
<item android:id="@+id/quick_save"
|
||||
<item
|
||||
android:id="@+id/quick_save"
|
||||
android:title="Quick Save" />
|
||||
</group>
|
||||
<group android:id="@+id/quick_settings">
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
android:title="Slow Boot" />
|
||||
<item
|
||||
android:id="@+id/game_list_entry_menu_load_state"
|
||||
android:title="Load State" >
|
||||
<menu >
|
||||
android:title="Load State">
|
||||
<menu>
|
||||
<item android:title="Item" />
|
||||
<item android:title="Item" />
|
||||
</menu>
|
||||
|
|
|
@ -1,16 +1,28 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="com.github.stenzek.duckstation.MainActivity" >
|
||||
tools:context="com.github.stenzek.duckstation.MainActivity">
|
||||
<group android:id="@+id/start_menu">
|
||||
<item
|
||||
android:id="@+id/action_resume"
|
||||
android:title="Resume Last Session" />
|
||||
<item
|
||||
android:id="@+id/action_start_bios"
|
||||
android:title="Start BIOS" />
|
||||
</group>
|
||||
<group android:id="@+id/game_list">
|
||||
<item android:id="@+id/action_add_game_directory"
|
||||
<item
|
||||
android:id="@+id/action_add_game_directory"
|
||||
android:title="Add Game Directory" />
|
||||
<item android:id="@+id/action_scan_for_new_games"
|
||||
<item
|
||||
android:id="@+id/action_scan_for_new_games"
|
||||
android:title="Scan For New Games" />
|
||||
<item android:id="@+id/action_rescan_all_games"
|
||||
<item
|
||||
android:id="@+id/action_rescan_all_games"
|
||||
android:title="Rescan All Games" />
|
||||
</group>
|
||||
<item android:id="@+id/action_settings"
|
||||
<item
|
||||
android:id="@+id/action_settings"
|
||||
android:title="@string/action_settings"
|
||||
android:orderInCategory="100"
|
||||
app:showAsAction="never" />
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<background android:drawable="@color/ic_launcher_background" />
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<background android:drawable="@color/ic_launcher_background" />
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
|
@ -32,22 +32,22 @@
|
|||
<item>Software</item>
|
||||
</string-array>
|
||||
<string-array name="settings_gpu_resolution_scale_entries">
|
||||
<item>1x (1024x512 VRAM)</item>
|
||||
<item>2x (2048x1024 VRAM)</item>
|
||||
<item>3x (3072x1536 VRAM)</item>
|
||||
<item>4x (4096x2048 VRAM)</item>
|
||||
<item>5x (5120x2560 VRAM)</item>
|
||||
<item>6x (6144x3072 VRAM)</item>
|
||||
<item>7x (7168x3584 VRAM)</item>
|
||||
<item>8x (8192x4096 VRAM)</item>
|
||||
<item>9x (9216x4608 VRAM)</item>
|
||||
<item>10x (10240x5120 VRAM)</item>
|
||||
<item>11x (11264x5632 VRAM)</item>
|
||||
<item>12x (12288x6144 VRAM)</item>
|
||||
<item>13x (13312x6656 VRAM)</item>
|
||||
<item>14x (14336x7168 VRAM)</item>
|
||||
<item>15x (15360x7680 VRAM)</item>
|
||||
<item>16x (16384x8192 VRAM)</item>
|
||||
<item>1x</item>
|
||||
<item>2x</item>
|
||||
<item>3x (for 720p)</item>
|
||||
<item>4x</item>
|
||||
<item>5x (for 1080p)</item>
|
||||
<item>6x (for 1440p)</item>
|
||||
<item>7x</item>
|
||||
<item>8x</item>
|
||||
<item>9x (for 4K)</item>
|
||||
<item>10x</item>
|
||||
<item>11x</item>
|
||||
<item>12x</item>
|
||||
<item>13x</item>
|
||||
<item>14x</item>
|
||||
<item>15x</item>
|
||||
<item>16x</item>
|
||||
</string-array>
|
||||
<string-array name="settings_gpu_resolution_scale_values">
|
||||
<item>1</item>
|
||||
|
|
|
@ -30,11 +30,11 @@
|
|||
<string name="settings_osd_show_show_vps">Show VPS</string>
|
||||
|
||||
<!-- CPU Preferences -->
|
||||
<string name="settings_cpu_execution_mode">Execution Mode</string>
|
||||
<string name="settings_cpu_execution_mode">CPU Execution Mode</string>
|
||||
<string name="settings_cpu_execution_mode_default">Interpreter</string>
|
||||
|
||||
<!-- GPU Preferences -->
|
||||
<string name="settings_gpu_renderer">Renderer</string>
|
||||
<string name="settings_gpu_renderer">GPU Renderer</string>
|
||||
<string name="settings_gpu_display_linear_filtering">Display Linear Filtering</string>
|
||||
<string name="settings_gpu_resolution_scale">Resolution Scale</string>
|
||||
<string name="settings_gpu_true_color">True 24-Bit Color (Disables Dithering)</string>
|
||||
|
|
|
@ -17,18 +17,67 @@
|
|||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<PreferenceCategory app:title="Game List">
|
||||
<Preference
|
||||
app:key="GameList/SearchPaths"
|
||||
app:title="Game Search Directories"/>
|
||||
<CheckBoxPreference
|
||||
app:key="GameList/SearchRecursively"
|
||||
app:title="Search Directories Recursively"
|
||||
app:defaultValue="true" />
|
||||
<EditTextPreference
|
||||
app:key="GameList/RedumpDatPath"
|
||||
app:title="Redump Database Path"
|
||||
<PreferenceCategory app:title="General">
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Main/SpeedLimiterEnabled"
|
||||
app:title="@string/settings_behavior_enable_speed_limiter"
|
||||
app:defaultValue="true"
|
||||
app:summary="Throttles the emulation speed to the chosen speed above. If unchecked, the emulator will run as fast as possible, which may not be playable." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Main/SaveStateOnExit"
|
||||
app:title="Save State On Exit"
|
||||
app:defaultValue="true"
|
||||
app:summary="Automatically saves the emulator state when powering down or exiting. You can then resume directly from where you left off next time." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/VSync"
|
||||
app:title="Video Sync"
|
||||
app:defaultValue="true"
|
||||
app:summary="Enable this option to match DuckStation's refresh rate with your current monitor or screen. VSync is automatically disabled when it is not possible (e.g. running at non-100% speed)." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Audio/Sync"
|
||||
app:title="Audio Sync"
|
||||
app:defaultValue="true"
|
||||
app:summary="Throttles the emulation speed based on the audio backend pulling audio frames. This helps to remove noises or crackling if emulation is too fast. Sync will automatically be disabled if not running at 100% speed." />
|
||||
|
||||
<ListPreference
|
||||
app:key="CPU/ExecutionMode"
|
||||
app:title="@string/settings_cpu_execution_mode"
|
||||
app:entries="@array/settings_cpu_execution_mode_entries"
|
||||
app:entryValues="@array/settings_cpu_execution_mode_values"
|
||||
app:defaultValue="Recompiler"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
app:key="GPU/Renderer"
|
||||
app:title="@string/settings_gpu_renderer"
|
||||
app:entries="@array/gpu_renderer_entries"
|
||||
app:entryValues="@array/gpu_renderer_values"
|
||||
app:defaultValue="OpenGL"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_osd_header">
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowOSDMessages"
|
||||
app:title="@string/settings_osd_show_messages"
|
||||
app:defaultValue="true"
|
||||
app:summary="Shows on-screen-display messages when events occur such as save states being created/loaded, screenshots being taken, etc." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowSpeed"
|
||||
app:title="@string/settings_osd_show_speed"
|
||||
app:defaultValue="false"
|
||||
app:summary="Sets the target emulation speed. It is not guaranteed that this speed will be reached, and if not, the emulator will run as fast as it can manage." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowFPS"
|
||||
app:title="@string/settings_osd_show_show_fps"
|
||||
app:defaultValue="false"
|
||||
app:summary="Shows the internal frame rate of the game in the top-right corner of the display." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowVPS"
|
||||
app:title="@string/settings_osd_show_show_vps"
|
||||
app:defaultValue="false"
|
||||
app:summary="Shows the number of frames (or v-syncs) displayed per second by the system in the top-right corner of the display." />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_console_header">
|
||||
|
@ -41,79 +90,15 @@
|
|||
app:defaultValue="@string/settings_console_region_default"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="BIOS/PatchTTYEnable"
|
||||
app:title="@string/settings_console_tty_output"
|
||||
app:defaultValue="false"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="BIOS/PatchFastBoot"
|
||||
app:title="@string/settings_console_fast_boot"
|
||||
app:defaultValue="false"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
app:summary="Skips the BIOS shell/intro, booting directly into the game. Usually safe to enable, but some games break." />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_behavior_header">
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Main/SpeedLimiterEnabled"
|
||||
app:title="@string/settings_behavior_enable_speed_limiter"
|
||||
app:defaultValue="true"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Main/StartPaused"
|
||||
app:title="@string/settings_behavior_pause_on_start"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Audio/Sync"
|
||||
app:title="@string/settings_host_synchronization_sync_to_audio"
|
||||
app:defaultValue="true"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_osd_header">
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowOSDMessages"
|
||||
app:title="@string/settings_osd_show_messages"
|
||||
app:defaultValue="true"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowSpeed"
|
||||
app:title="@string/settings_osd_show_speed"
|
||||
app:defaultValue="false"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowFPS"
|
||||
app:title="@string/settings_osd_show_show_fps"
|
||||
app:defaultValue="false"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/ShowVPS"
|
||||
app:title="@string/settings_osd_show_show_vps"
|
||||
app:defaultValue="false"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_cpu_header">
|
||||
<ListPreference
|
||||
app:key="CPU/ExecutionMode"
|
||||
app:title="@string/settings_cpu_execution_mode"
|
||||
app:entries="@array/settings_cpu_execution_mode_entries"
|
||||
app:entryValues="@array/settings_cpu_execution_mode_values"
|
||||
app:defaultValue="Recompiler"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory app:title="@string/settings_gpu_header">
|
||||
|
||||
<ListPreference
|
||||
app:key="GPU/Renderer"
|
||||
app:title="@string/settings_gpu_renderer"
|
||||
app:entries="@array/gpu_renderer_entries"
|
||||
app:entryValues="@array/gpu_renderer_values"
|
||||
app:defaultValue="OpenGL"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<PreferenceCategory app:title="Enhancements">
|
||||
<ListPreference
|
||||
app:key="GPU/ResolutionScale"
|
||||
app:title="@string/settings_gpu_resolution_scale"
|
||||
|
@ -122,89 +107,89 @@
|
|||
app:defaultValue="1"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/TrueColor"
|
||||
app:title="@string/settings_gpu_true_color"
|
||||
app:defaultValue="false"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="Enhancements">
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/TrueColor"
|
||||
app:title="True Color Rendering (24-bit, disables dithering)"
|
||||
app:defaultValue="false"/>
|
||||
app:summary="Forces the precision of colours output to the console's framebuffer to use the full 8 bits of precision per channel. This produces nicer looking gradients at the cost of making some colours look slightly different. Disabling the option also enables dithering, which makes the transition between colours less sharp by applying a pattern around those pixels. Most games are compatible with this option, but there is a number which aren't and will have broken effects with it enabled. Only applies to the hardware renderers." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/ScaledDithering"
|
||||
app:title="Scaled Dithering (scale dither pattern to resolution)"
|
||||
app:defaultValue="true"/>
|
||||
app:key="GPU/ScaledDithering"
|
||||
app:title="Scaled Dithering (scale dither pattern to resolution)"
|
||||
app:defaultValue="true"
|
||||
app:summary="Scales the dither pattern to the resolution scale of the emulated GPU. This makes the dither pattern much less obvious at higher resolutions. Usually safe to enable, and only supported by the hardware renderers." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/DisableInterlacing"
|
||||
app:title="Disable Interlacing (force progressive render/scan)"
|
||||
app:defaultValue="true"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/ForceNTSCTimings"
|
||||
app:title="Force NTSC Timings (60hz-on-PAL)"
|
||||
app:defaultValue="false"/>
|
||||
app:key="GPU/DisableInterlacing"
|
||||
app:title="Disable Interlacing (force progressive render/scan)"
|
||||
app:defaultValue="true"
|
||||
app:summary="Forces the rendering and display of frames to progressive mode. This removes the "combing" effect seen in 480i games by rendering them in 480p. Usually safe to enable." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/TextureFiltering"
|
||||
app:title="Bilinear Texture Filtering"
|
||||
app:defaultValue="false"
|
||||
app:summary="Smooths out the blockyness of magnified textures on 3D object by using bilinear filtering. Will have a greater effect on higher resolution scales. Only applies to the hardware renderers." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/ForceNTSCTimings"
|
||||
app:title="Force NTSC Timings (60hz-on-PAL)"
|
||||
app:defaultValue="false"
|
||||
app:summary="Uses NTSC frame timings when the console is in PAL mode, forcing PAL games to run at 60hz. For most games which have a speed tied to the framerate, this will result in the game running approximately 17% faster. For variable frame rate games, it may not affect the speed." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/WidescreenHack"
|
||||
app:title="Widescreen Hack"
|
||||
app:defaultValue="false"
|
||||
app:summary="Scales vertex positions in screen-space to a widescreen aspect ratio, essentially increasing the field of view from 4:3 to 16:9 in 3D games. For 2D games, or games which use pre-rendered backgrounds, this enhancement will not work as expected. May not be compatible with all games." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/PGXPEnable"
|
||||
app:title="PGXP Geometry Correction"
|
||||
app:defaultValue="false"/>
|
||||
app:defaultValue="false"
|
||||
app:summary="Reduces "wobbly" polygons and "warping" textures that are common in PS1 games. >Only works with the hardware renderers. May not be compatible with all games." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/PGXPCulling"
|
||||
app:title="PGXP Culling Correction"
|
||||
app:defaultValue="true"/>
|
||||
|
||||
app:defaultValue="true"
|
||||
app:summary="Increases the precision of polygon culling, reducing the number of holes in geometry. Requires geometry correction enabled." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/PGXPTextureCorrection"
|
||||
app:title="PGXP Texture Correction"
|
||||
app:defaultValue="true"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/PGXPVertexCache"
|
||||
app:title="PGXP Vertex Cache"
|
||||
app:defaultValue="false"/>
|
||||
app:summary="Uses perspective-correct interpolation for texture coordinates and colors, straightening out warped textures. Requires geometry correction enabled." />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
<PreferenceCategory app:title="Display">
|
||||
<ListPreference
|
||||
<ListPreference
|
||||
app:key="Display/CropMode"
|
||||
app:title="Crop Mode"
|
||||
app:entries="@array/settings_display_crop_mode_entries"
|
||||
app:entryValues="@array/settings_display_crop_mode_values"
|
||||
app:defaultValue="Overscan"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<ListPreference
|
||||
|
||||
<ListPreference
|
||||
app:key="Display/AspectRatio"
|
||||
app:title="Aspect Ratio"
|
||||
app:entries="@array/settings_display_aspect_ratio_names"
|
||||
app:entryValues="@array/settings_display_aspect_ratio_values"
|
||||
app:defaultValue="4:3"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/LinearFiltering"
|
||||
app:title="Linear Upscaling"
|
||||
app:defaultValue="true"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:defaultValue="true"
|
||||
app:summary="Uses bilinear texture filtering when displaying the console's framebuffer to the screen. Disabling filtering will producer a sharper, blockier/pixelated image. Enabling will smooth out the image. The option will be less noticable the higher the resolution scale." />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/IntegerScaling"
|
||||
app:title="Integer Upscaling"
|
||||
app:defaultValue="false"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
app:key="Display/VSync"
|
||||
app:title="VSync"
|
||||
app:defaultValue="true"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
app:defaultValue="false"
|
||||
app:summary="Adds padding to the display area to ensure that the ratio between pixels on the host to pixels in the console is an integer number. May result in a sharper image in some 2D games." />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="Controller">
|
||||
|
@ -224,7 +209,7 @@
|
|||
app:title="Display Touchscreen Controller"
|
||||
app:defaultValue="true" />
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
<PreferenceCategory app:title="Memory Cards">
|
||||
<ListPreference
|
||||
app:key="MemoryCards/Card1Type"
|
||||
|
@ -242,4 +227,26 @@
|
|||
app:useSimpleSummaryProvider="true" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="Advanced Settings">
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/PGXPVertexCache"
|
||||
app:title="PGXP Vertex Cache"
|
||||
app:defaultValue="false"
|
||||
app:summary="Uses screen coordinates as a fallback when tracking vertices through memory fails. May improve PGXP compatibility." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="GPU/PGXPCPU"
|
||||
app:title="PGXP CPU Mode"
|
||||
app:defaultValue="false"
|
||||
app:summary="Tries to track vertex manipulation through the CPU. Some games require this option for PGXP to be effective. Very slow, and incompatible with the recompiler." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="CPU/RecompilerICache"
|
||||
app:title="CPU Recompiler ICache"
|
||||
app:defaultValue="false"
|
||||
app:summary="Determines whether the CPU's instruction cache is simulated in the recompiler. Improves accuracy at a small cost to performance. If games are running too fast, try enabling this option." />
|
||||
<SwitchPreferenceCompat
|
||||
app:key="BIOS/PatchTTYEnable"
|
||||
app:title="@string/settings_console_tty_output"
|
||||
app:defaultValue="false" />
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
|
Loading…
Reference in New Issue