pull/137/head
FongMi 4 years ago
parent 9cdbfbcd05
commit e508ad4c4d
  1. 1
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java
  2. 0
      app/src/leanback/res/layout/dialog_tracks.xml
  3. 0
      app/src/leanback/res/layout/dialog_update.xml
  4. 0
      app/src/main/res/drawable/ic_history.xml
  5. 3
      app/src/mobile/AndroidManifest.xml
  6. 6
      app/src/mobile/java/com/fongmi/android/tv/impl/ConfigCallback.java
  7. 8
      app/src/mobile/java/com/fongmi/android/tv/impl/SiteCallback.java
  8. 6
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/SplashActivity.java
  9. 20
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/SiteAdapter.java
  10. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java
  11. 43
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/SiteDialog.java
  12. 78
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java
  13. 6
      app/src/mobile/res/drawable/selector_text.xml
  14. 15
      app/src/mobile/res/drawable/shape_text_activated.xml
  15. 15
      app/src/mobile/res/drawable/shape_text_focused.xml
  16. 15
      app/src/mobile/res/drawable/shape_text_normal.xml
  17. 35
      app/src/mobile/res/layout/adapter_site.xml
  18. 2
      app/src/mobile/res/layout/dialog_site.xml
  19. 50
      app/src/mobile/res/layout/dialog_tracks.xml
  20. 74
      app/src/mobile/res/layout/dialog_update.xml
  21. 150
      app/src/mobile/res/layout/fragment_setting.xml

@ -24,7 +24,6 @@ import com.fongmi.android.tv.bean.Collect;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.databinding.ActivityCollectBinding;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.ui.custom.CustomScroller;
import com.fongmi.android.tv.ui.fragment.CollectFragment;
import com.fongmi.android.tv.ui.presenter.CollectPresenter;
import com.fongmi.android.tv.utils.ResUtil;

@ -35,7 +35,8 @@
<activity
android:name=".ui.activity.MainActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:screenOrientation="fullSensor" />
android:screenOrientation="fullSensor"
android:windowSoftInputMode="adjustPan" />
</application>
</manifest>

@ -0,0 +1,6 @@
package com.fongmi.android.tv.impl;
public interface ConfigCallback {
void setConfig(String url);
}

@ -0,0 +1,8 @@
package com.fongmi.android.tv.impl;
import com.fongmi.android.tv.bean.Site;
public interface SiteCallback {
void setSite(Site item);
}

@ -10,6 +10,7 @@ import androidx.core.splashscreen.SplashScreen;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.databinding.ActivitySplashBinding;
import com.fongmi.android.tv.net.Callback;
import com.fongmi.android.tv.utils.Notify;
@ -32,15 +33,15 @@ public class SplashActivity extends BaseActivity {
@Override
protected void initView() {
mBinding.title.animate().alpha(1).setDuration(2000).setListener(onAnimationEnd()).start();
mBinding.title.animate().alpha(1).setDuration(1000).setListener(onAnimationEnd()).start();
}
private AnimatorListenerAdapter onAnimationEnd() {
return new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mBinding.title.setVisibility(View.GONE);
mBinding.info.animate().alpha(1).setDuration(500).start();
mBinding.title.setVisibility(View.GONE);
loadConfig();
}
};
@ -51,6 +52,7 @@ public class SplashActivity extends BaseActivity {
@Override
public void success() {
MainActivity.start(getActivity());
Config.save();
}
@Override

@ -1,7 +1,6 @@
package com.fongmi.android.tv.ui.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@ -25,22 +24,20 @@ public class SiteAdapter extends RecyclerView.Adapter<SiteAdapter.ViewHolder> {
public interface OnClickListener {
void onItemClick(Site item);
void onTextClick(Site item);
void onSearchClick(Site item);
void onFilterClick(Site item);
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterSiteBinding binding;
ViewHolder(@NonNull AdapterSiteBinding binding) {
super(binding.getRoot());
this.binding = binding;
binding.getRoot().setOnClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onItemClick(mItems.get(getLayoutPosition()));
}
}
@ -59,5 +56,10 @@ public class SiteAdapter extends RecyclerView.Adapter<SiteAdapter.ViewHolder> {
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Site item = mItems.get(position);
holder.binding.text.setText(item.getActivatedName());
holder.binding.filter.setImageResource(item.getFilterIcon());
holder.binding.search.setImageResource(item.getSearchIcon());
holder.binding.text.setOnClickListener(v -> mListener.onTextClick(item));
holder.binding.search.setOnClickListener(v -> mListener.onSearchClick(item));
holder.binding.filter.setOnClickListener(v -> mListener.onFilterClick(item));
}
}

@ -8,21 +8,22 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import com.fongmi.android.tv.databinding.DialogConfigBinding;
import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.utils.Prefers;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class ConfigDialog {
private DialogConfigBinding binding;
private ConfigCallback callback;
private AlertDialog dialog;
private Callback callback;
public static void show(Fragment fragment) {
new ConfigDialog().create(fragment);
}
public void create(Fragment fragment) {
callback = (Callback) fragment;
callback = (ConfigCallback) fragment;
binding = DialogConfigBinding.inflate(LayoutInflater.from(fragment.getContext()));
dialog = new MaterialAlertDialogBuilder(fragment.getContext()).setView(binding.getRoot()).create();
initDialog();
@ -59,9 +60,4 @@ public class ConfigDialog {
private void onNegative(View view) {
dialog.dismiss();
}
public interface Callback {
void setConfig(String url);
}
}

@ -9,6 +9,7 @@ import androidx.fragment.app.Fragment;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.databinding.DialogSiteBinding;
import com.fongmi.android.tv.impl.SiteCallback;
import com.fongmi.android.tv.ui.adapter.SiteAdapter;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -16,9 +17,9 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class SiteDialog implements SiteAdapter.OnClickListener {
private DialogSiteBinding binding;
private SiteCallback callback;
private SiteAdapter adapter;
private AlertDialog dialog;
private Callback callback;
public static void show(Fragment fragment) {
if (ApiConfig.get().getSites().isEmpty()) return;
@ -26,37 +27,43 @@ public class SiteDialog implements SiteAdapter.OnClickListener {
}
public void create(Fragment fragment) {
callback = (Callback) fragment;
callback = (SiteCallback) fragment;
binding = DialogSiteBinding.inflate(LayoutInflater.from(fragment.getContext()));
dialog = new MaterialAlertDialogBuilder(fragment.getContext()).setView(binding.getRoot()).create();
initDialog();
initView();
dialog = new MaterialAlertDialogBuilder(fragment.getActivity()).setView(binding.getRoot()).create();
setRecyclerView();
setDialog();
}
private void initDialog() {
private void setRecyclerView() {
binding.recycler.setHasFixedSize(true);
binding.recycler.setAdapter(adapter = new SiteAdapter(this));
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.scrollToPosition(ApiConfig.getHomeIndex());
}
private void setDialog() {
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.height = (int) (ResUtil.getScreenHeightPx() * 0.6f);
params.height = (int) (ResUtil.getScreenHeightPx() * 0.615f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();
}
private void initView() {
int position = ApiConfig.get().getSites().indexOf(ApiConfig.get().getHome());
adapter = new SiteAdapter(this);
binding.recycler.setHasFixedSize(true);
binding.recycler.setAdapter(adapter);
binding.recycler.scrollToPosition(position);
}
@Override
public void onItemClick(Site item) {
public void onTextClick(Site item) {
callback.setSite(item);
dialog.dismiss();
}
public interface Callback {
@Override
public void onSearchClick(Site item) {
item.setSearchable(!item.isSearchable()).save();
adapter.notifyDataSetChanged();
}
void setSite(Site item);
@Override
public void onFilterClick(Site item) {
item.setFilterable(!item.isFilterable()).save();
adapter.notifyDataSetChanged();
}
}

@ -3,31 +3,41 @@ package com.fongmi.android.tv.ui.fragment;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.content.ContextCompat;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.BuildConfig;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.databinding.FragmentSettingBinding;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.impl.SiteCallback;
import com.fongmi.android.tv.net.Callback;
import com.fongmi.android.tv.ui.activity.BaseFragment;
import com.fongmi.android.tv.ui.custom.ConfigDialog;
import com.fongmi.android.tv.ui.custom.SiteDialog;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Updater;
public class SettingFragment extends BaseFragment implements ConfigDialog.Callback, SiteDialog.Callback {
public class SettingFragment extends BaseFragment implements ConfigCallback, SiteCallback {
private final ActivityResultLauncher<String> launcherString = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> loadConfig());
private final ActivityResultLauncher<Intent> launcherIntent = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> loadConfig());
@ -43,12 +53,21 @@ public class SettingFragment extends BaseFragment implements ConfigDialog.Callba
protected void initView() {
mBinding.url.setText(Prefers.getUrl());
mBinding.home.setText(ApiConfig.getHomeName());
mBinding.scaleText.setText(ResUtil.getStringArray(R.array.select_scale)[Prefers.getScale()]);
mBinding.renderText.setText(ResUtil.getStringArray(R.array.select_render)[Prefers.getRender()]);
mBinding.qualityText.setText(ResUtil.getStringArray(R.array.select_quality)[Prefers.getQuality()]);
mBinding.versionText.setText(BuildConfig.VERSION_NAME);
}
@Override
protected void initEvent() {
mBinding.site.setOnClickListener(v -> SiteDialog.show(this));
mBinding.config.setOnClickListener(v -> ConfigDialog.show(this));
mBinding.site.setOnClickListener(view -> SiteDialog.show(this));
mBinding.config.setOnClickListener(view -> ConfigDialog.show(this));
//mBinding.history.setOnClickListener(view -> HistoryDialog.show(this));
mBinding.version.setOnClickListener(view -> Updater.create(getActivity()).force().start());
mBinding.quality.setOnClickListener(this::setQuality);
mBinding.render.setOnClickListener(this::setRender);
mBinding.scale.setOnClickListener(this::setScale);
}
@Override
@ -68,7 +87,7 @@ public class SettingFragment extends BaseFragment implements ConfigDialog.Callba
private void checkUrl(String url) {
if (url.startsWith("file://") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
launcherIntent.launch(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION));
openSetting();
} else if (url.startsWith("file://") && Build.VERSION.SDK_INT < Build.VERSION_CODES.R && ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
launcherString.launch(Manifest.permission.READ_EXTERNAL_STORAGE);
} else {
@ -76,24 +95,57 @@ public class SettingFragment extends BaseFragment implements ConfigDialog.Callba
}
}
@RequiresApi(api = Build.VERSION_CODES.R)
private void openSetting() {
try {
launcherIntent.launch(new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse("package:" + BuildConfig.APPLICATION_ID)));
} catch (Exception e) {
launcherIntent.launch(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION));
}
}
private void loadConfig() {
ApiConfig.get().clear().loadConfig(new Callback() {
@Override
public void success() {
mBinding.home.setText(ApiConfig.getHomeName());
RefreshEvent.history();
RefreshEvent.video();
Notify.dismiss();
Config.save();
setSite(0);
}
@Override
public void error(int resId) {
mBinding.home.setText(ApiConfig.getHomeName());
RefreshEvent.history();
RefreshEvent.video();
Notify.dismiss();
Notify.show(resId);
setSite(resId);
}
});
}
private void setSite(int resId) {
mBinding.home.setText(ApiConfig.getHomeName());
RefreshEvent.history();
RefreshEvent.video();
Notify.show(resId);
Notify.dismiss();
}
private void setQuality(View view) {
CharSequence[] array = ResUtil.getStringArray(R.array.select_quality);
int index = Prefers.getQuality();
Prefers.putQuality(index = index == array.length - 1 ? 0 : ++index);
mBinding.qualityText.setText(array[index]);
RefreshEvent.image();
}
private void setRender(View view) {
CharSequence[] array = ResUtil.getStringArray(R.array.select_render);
int index = Prefers.getRender();
Prefers.putRender(index = index == array.length - 1 ? 0 : ++index);
mBinding.renderText.setText(array[index]);
}
private void setScale(View view) {
CharSequence[] array = ResUtil.getStringArray(R.array.select_scale);
int index = Prefers.getScale();
Prefers.putScale(index = index == array.length - 1 ? 0 : ++index);
mBinding.scaleText.setText(array[index]);
}
}

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_text_focused" android:state_focused="true" />
<item android:drawable="@drawable/shape_text_activated" android:state_activated="true" />
<item android:drawable="@drawable/shape_text_normal" />
</selector>

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_80" />
<corners android:radius="4dp" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_70" />
<corners android:radius="4dp" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_50" />
<corners android:radius="4dp" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>

@ -3,18 +3,41 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@drawable/shape_text"
android:foreground="?android:attr/selectableItemBackground">
android:orientation="horizontal">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/shape_text"
android:foreground="?android:attr/selectableItemBackground"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="18sp"
android:textSize="16sp"
tools:text="泥巴" />
<ImageView
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:background="@drawable/shape_text"
android:foreground="?android:attr/selectableItemBackground"
android:padding="8dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_search_on" />
<ImageView
android:id="@+id/filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_text"
android:foreground="?android:attr/selectableItemBackground"
android:padding="8dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_filter_on" />
</LinearLayout>

@ -6,5 +6,5 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:padding="8dp"
android:padding="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.viewpager.widget.ViewPager
android:id="@+id/track_selection_dialog_view_pager"
android:layout_width="match_parent"
android:layout_height="200dp">
<com.google.android.material.tabs.TabLayout
android:id="@+id/track_selection_dialog_tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed" />
</androidx.viewpager.widget.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:orientation="horizontal">
<TextView
android:id="@+id/track_selection_dialog_ok_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:background="@drawable/shape_text"
android:gravity="center"
android:text="@android:string/ok"
android:textColor="@color/white" />
<TextView
android:id="@+id/track_selection_dialog_cancel_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/shape_text"
android:gravity="center"
android:text="@android:string/cancel"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:letterSpacing="0.02"
android:textColor="@color/grey_900"
android:textSize="18sp"
tools:text="@string/update_version" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:background="@color/grey_300" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="16dp"
android:layout_weight="1">
<TextView
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:letterSpacing="0.02"
android:lineSpacingExtra="8dp"
android:textColor="@color/grey_900"
android:textSize="16sp"
tools:text="1. 新增 ffmpeg 音頻軟解\n2. 詳情頁新增分詞快搜\n3. 修復搜尋閃退問題\n4. 設定支援渲染切換" />
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/confirm"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:background="@drawable/shape_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/update_confirm"
android:textColor="@color/white" />
<TextView
android:id="@+id/cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/shape_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:text="@string/dialog_negative"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>

@ -21,19 +21,123 @@
android:layout_weight="1"
android:text="@string/setting_site"
android:textColor="@color/white"
android:textSize="18sp" />
android:textSize="16sp" />
<TextView
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="18sp" />
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/config"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/config"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:background="@drawable/shape_item"
android:foreground="?android:attr/selectableItemBackground"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_url"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="https://" />
</LinearLayout>
<ImageView
android:id="@+id/history"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_item"
android:foreground="?android:attr/selectableItemBackground"
android:padding="8dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_history" />
</LinearLayout>
<LinearLayout
android:id="@+id/render"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:foreground="?android:attr/selectableItemBackground"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_render"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/renderText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="Surface" />
</LinearLayout>
<LinearLayout
android:id="@+id/scale"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:foreground="?android:attr/selectableItemBackground"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_scale"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/scaleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="Fill" />
</LinearLayout>
<LinearLayout
android:id="@+id/quality"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
@ -45,21 +149,45 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_url"
android:text="@string/setting_quality"
android:textColor="@color/white"
android:textSize="18sp" />
android:textSize="16sp" />
<TextView
android:id="@+id/qualityText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="High" />
</LinearLayout>
<LinearLayout
android:id="@+id/version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:foreground="?android:attr/selectableItemBackground"
android:orientation="horizontal">
<TextView
android:id="@+id/url"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:singleLine="true"
android:text="@string/setting_version"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/versionText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="18sp"
tools:ignore="NestedWeights"
tools:text="https://" />
android:textSize="16sp"
tools:text="1.2.1" />
</LinearLayout>
</LinearLayout>
Loading…
Cancel
Save