Ripple improvements
This commit is contained in:
52 files changed
+210
-239
No files matched your search
@@ -21,7 +21,6 @@ import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.hippo.ehviewer.R;
|
||||
@@ -36,7 +35,7 @@ public class CheckBoxDialogBuilder extends MaterialAlertDialogBuilder {
|
||||
View view = LayoutInflater.from(getContext()).inflate(R.layout.dialog_checkbox_builder, null);
|
||||
setView(view);
|
||||
setMessage(message);
|
||||
mCheckBox = (CheckBox) view.findViewById(R.id.checkbox);
|
||||
mCheckBox = view.findViewById(R.id.checkbox);
|
||||
mCheckBox.setText(checkText);
|
||||
mCheckBox.setChecked(checked);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ public class EditTextDialogBuilder extends MaterialAlertDialogBuilder implements
|
||||
View view = LayoutInflater.from(getContext()).inflate(R.layout.dialog_edittext_builder, null);
|
||||
setView(view);
|
||||
mTextInputLayout = (TextInputLayout) view;
|
||||
mEditText = (EditText) view.findViewById(R.id.edit_text);
|
||||
mEditText = view.findViewById(R.id.edit_text);
|
||||
mEditText.setText(text);
|
||||
mEditText.setSelection(mEditText.getText().length());
|
||||
mEditText.setOnEditorActionListener(this);
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ListView;
|
||||
|
||||
@@ -154,14 +154,14 @@ public class ProgressDialog extends AlertDialog {
|
||||
}
|
||||
};
|
||||
View view = inflater.inflate(R.layout.alert_dialog_progress_material, null);
|
||||
mProgress = (ProgressBar) view.findViewById(R.id.progress);
|
||||
mProgressNumber = (TextView) view.findViewById(R.id.progress_number);
|
||||
mProgressPercent = (TextView) view.findViewById(R.id.progress_percent);
|
||||
mProgress = view.findViewById(R.id.progress);
|
||||
mProgressNumber = view.findViewById(R.id.progress_number);
|
||||
mProgressPercent = view.findViewById(R.id.progress_percent);
|
||||
setView(view);
|
||||
} else {
|
||||
View view = inflater.inflate(R.layout.progress_dialog_material, null);
|
||||
mProgress = (ProgressBar) view.findViewById(R.id.progress);
|
||||
mMessageView = (TextView) view.findViewById(R.id.message);
|
||||
mProgress = view.findViewById(R.id.progress);
|
||||
mMessageView = view.findViewById(R.id.message);
|
||||
setView(view);
|
||||
}
|
||||
if (mMax > 0) {
|
||||
|
||||
@@ -35,8 +35,6 @@ import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.collection.LruCache;
|
||||
|
||||
import com.getkeepsafe.relinker.ReLinker;
|
||||
import com.hippo.a7zip.A7Zip;
|
||||
import com.hippo.a7zip.A7ZipExtractLite;
|
||||
import com.hippo.beerbelly.SimpleDiskCache;
|
||||
import com.hippo.conaco.Conaco;
|
||||
import com.hippo.content.RecordingApplication;
|
||||
|
||||
@@ -222,7 +222,7 @@ public class EhDB {
|
||||
search = search.substring("uploader:".length());
|
||||
}
|
||||
|
||||
quickSearch.setTime((long) cursor.getInt(0));
|
||||
quickSearch.setTime(cursor.getInt(0));
|
||||
quickSearch.setName(cursor.getString(1));
|
||||
quickSearch.setMode(mode);
|
||||
quickSearch.setCategory(cursor.getInt(3));
|
||||
@@ -660,7 +660,7 @@ public class EhDB {
|
||||
OutputStream os = null;
|
||||
try {
|
||||
is = new FileInputStream(dbFile);
|
||||
os = context.getContentResolver().openOutputStream(uri);;
|
||||
os = context.getContentResolver().openOutputStream(uri);
|
||||
IOUtils.copy(is, os);
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
|
||||
+2
-2
@@ -96,7 +96,7 @@ public class ExcludedTagNamespacesPreference extends DialogPreference {
|
||||
|
||||
private void setExcludedTagNamespaces(View view, int value) {
|
||||
for (int i = 0; i < EXCLUDED_TAG_GROUP_RES_ID.length; i++) {
|
||||
CheckBox cb = (CheckBox) view.findViewById(EXCLUDED_TAG_GROUP_RES_ID[i]);
|
||||
CheckBox cb = view.findViewById(EXCLUDED_TAG_GROUP_RES_ID[i]);
|
||||
cb.setChecked(NumberUtils.int2boolean(value & EXCLUDED_TAG_GROUP_ID[i]));
|
||||
}
|
||||
}
|
||||
@@ -104,7 +104,7 @@ public class ExcludedTagNamespacesPreference extends DialogPreference {
|
||||
private int getExcludedTagNamespaces(View view) {
|
||||
int newValue = 0;
|
||||
for (int i = 0; i < EXCLUDED_TAG_GROUP_RES_ID.length; i++) {
|
||||
CheckBox cb = (CheckBox) view.findViewById(EXCLUDED_TAG_GROUP_RES_ID[i]);
|
||||
CheckBox cb = view.findViewById(EXCLUDED_TAG_GROUP_RES_ID[i]);
|
||||
if (cb.isChecked()) {
|
||||
newValue |= EXCLUDED_TAG_GROUP_ID[i];
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.hippo.ehviewer.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -43,7 +42,6 @@ import com.hippo.ehviewer.ui.scene.BaseScene;
|
||||
import com.hippo.text.Html;
|
||||
import com.hippo.unifile.UniFile;
|
||||
import com.hippo.util.ExceptionUtils;
|
||||
import com.hippo.util.IoThreadPoolExecutor;
|
||||
import com.hippo.yorozuya.FileUtils;
|
||||
import com.hippo.yorozuya.IOUtils;
|
||||
import com.hippo.yorozuya.collect.LongList;
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.hippo.ehviewer.ui;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.WindowManager;
|
||||
|
||||
@@ -27,7 +26,6 @@ import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StyleRes;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.hippo.android.resource.AttrResources;
|
||||
import com.hippo.content.ContextLocalWrapper;
|
||||
import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.R;
|
||||
|
||||
@@ -41,7 +41,6 @@ import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.webkit.MimeTypeMap;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.Spinner;
|
||||
@@ -935,19 +934,19 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan
|
||||
@SuppressLint("InflateParams")
|
||||
public GalleryMenuHelper(Context context) {
|
||||
mView = LayoutInflater.from(context).inflate(R.layout.dialog_gallery_menu, null);
|
||||
mScreenRotation = (Spinner) mView.findViewById(R.id.screen_rotation);
|
||||
mReadingDirection = (Spinner) mView.findViewById(R.id.reading_direction);
|
||||
mScaleMode = (Spinner) mView.findViewById(R.id.page_scaling);
|
||||
mStartPosition = (Spinner) mView.findViewById(R.id.start_position);
|
||||
mKeepScreenOn = (SwitchCompat) mView.findViewById(R.id.keep_screen_on);
|
||||
mShowClock = (SwitchCompat) mView.findViewById(R.id.show_clock);
|
||||
mShowProgress = (SwitchCompat) mView.findViewById(R.id.show_progress);
|
||||
mShowBattery = (SwitchCompat) mView.findViewById(R.id.show_battery);
|
||||
mShowPageInterval = (SwitchCompat) mView.findViewById(R.id.show_page_interval);
|
||||
mVolumePage = (SwitchCompat) mView.findViewById(R.id.volume_page);
|
||||
mReadingFullscreen = (SwitchCompat) mView.findViewById(R.id.reading_fullscreen);
|
||||
mCustomScreenLightness = (SwitchCompat) mView.findViewById(R.id.custom_screen_lightness);
|
||||
mScreenLightness = (SeekBar) mView.findViewById(R.id.screen_lightness);
|
||||
mScreenRotation = mView.findViewById(R.id.screen_rotation);
|
||||
mReadingDirection = mView.findViewById(R.id.reading_direction);
|
||||
mScaleMode = mView.findViewById(R.id.page_scaling);
|
||||
mStartPosition = mView.findViewById(R.id.start_position);
|
||||
mKeepScreenOn = mView.findViewById(R.id.keep_screen_on);
|
||||
mShowClock = mView.findViewById(R.id.show_clock);
|
||||
mShowProgress = mView.findViewById(R.id.show_progress);
|
||||
mShowBattery = mView.findViewById(R.id.show_battery);
|
||||
mShowPageInterval = mView.findViewById(R.id.show_page_interval);
|
||||
mVolumePage = mView.findViewById(R.id.volume_page);
|
||||
mReadingFullscreen = mView.findViewById(R.id.reading_fullscreen);
|
||||
mCustomScreenLightness = mView.findViewById(R.id.custom_screen_lightness);
|
||||
mScreenLightness = mView.findViewById(R.id.screen_lightness);
|
||||
|
||||
mScreenRotation.setSelection(Settings.getScreenRotation());
|
||||
mReadingDirection.setSelection(Settings.getReadingDirection());
|
||||
|
||||
@@ -22,8 +22,6 @@ package com.hippo.ehviewer.ui;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.util.Pair;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -48,14 +46,13 @@ import com.hippo.easyrecyclerview.LinearDividerItemDecoration;
|
||||
import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.Hosts;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class HostsActivity extends ToolbarActivity
|
||||
implements EasyRecyclerView.OnItemClickListener, View.OnClickListener {
|
||||
implements View.OnClickListener {
|
||||
|
||||
private static final String DIALOG_TAG_ADD_HOST = AddHostDialogFragment.class.getName();
|
||||
private static final String DIALOG_TAG_EDIT_HOST = EditHostDialogFragment.class.getName();
|
||||
@@ -92,9 +89,9 @@ public class HostsActivity extends ToolbarActivity
|
||||
LayoutUtils.dp2pix(this, 1));
|
||||
decoration.setShowLastDivider(true);
|
||||
recyclerView.addItemDecoration(decoration);
|
||||
recyclerView.setSelector(Ripple.generateRippleDrawable(this, !AttrResources.getAttrBoolean(this, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//recyclerView.setSelector(Ripple.generateRippleDrawable(this, !AttrResources.getAttrBoolean(this, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
recyclerView.setHasFixedSize(true);
|
||||
recyclerView.setOnItemClickListener(this);
|
||||
//recyclerView.setOnItemClickListener(this);
|
||||
recyclerView.setPadding(
|
||||
recyclerView.getPaddingLeft(),
|
||||
recyclerView.getPaddingTop(),
|
||||
@@ -118,8 +115,7 @@ public class HostsActivity extends ToolbarActivity
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView easyRecyclerView, View view, int position, long id) {
|
||||
public boolean onItemClick(int position) {
|
||||
Pair<String, String> pair = data.get(position);
|
||||
Bundle args = new Bundle();
|
||||
args.putString(KEY_HOST, pair.first);
|
||||
@@ -269,6 +265,7 @@ public class HostsActivity extends ToolbarActivity
|
||||
Pair<String, String> pair = data.get(position);
|
||||
holder.host.setText(pair.first);
|
||||
holder.ip.setText(pair.second);
|
||||
holder.itemView.setOnClickListener(v -> onItemClick(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -18,12 +18,10 @@ package com.hippo.ehviewer.ui;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.CookieSyncManager;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
|
||||
@@ -25,12 +25,6 @@ import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.ui.fragment.AboutFragment;
|
||||
import com.hippo.ehviewer.ui.fragment.AdvancedFragment;
|
||||
import com.hippo.ehviewer.ui.fragment.DownloadFragment;
|
||||
import com.hippo.ehviewer.ui.fragment.EhFragment;
|
||||
import com.hippo.ehviewer.ui.fragment.PrivacyFragment;
|
||||
import com.hippo.ehviewer.ui.fragment.ReadFragment;
|
||||
import com.hippo.ehviewer.ui.fragment.SettingsFragment;
|
||||
import com.hippo.util.DrawableManager;
|
||||
|
||||
|
||||
@@ -37,22 +37,22 @@ public abstract class ToolbarActivity extends EhActivity {
|
||||
@Override
|
||||
public void setContentView(@LayoutRes int layoutResID) {
|
||||
super.setContentView(R.layout.activity_toolbar);
|
||||
getLayoutInflater().inflate(layoutResID, (ViewGroup) findViewById(R.id.content_panel), true);
|
||||
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
|
||||
getLayoutInflater().inflate(layoutResID, findViewById(R.id.content_panel), true);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContentView(View view) {
|
||||
super.setContentView(R.layout.activity_toolbar);
|
||||
((ViewGroup) findViewById(R.id.content_panel)).addView(view);
|
||||
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setContentView(View view, ViewGroup.LayoutParams params) {
|
||||
super.setContentView(R.layout.activity_toolbar);
|
||||
((ViewGroup) findViewById(R.id.content_panel)).addView(view, params);
|
||||
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
}
|
||||
|
||||
public void setNavigationIcon(@DrawableRes int resId) {
|
||||
|
||||
@@ -22,13 +22,11 @@ package com.hippo.ehviewer.ui;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.CookieSyncManager;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
@@ -73,12 +71,12 @@ public class UConfigActivity extends ToolbarActivity {
|
||||
|
||||
setContentView(R.layout.activity_u_config);
|
||||
setNavigationIcon(R.drawable.v_arrow_left_dark_x24);
|
||||
webView = (WebView) findViewById(R.id.webview);
|
||||
webView = findViewById(R.id.webview);
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.setWebViewClient(new UConfigWebViewClient());
|
||||
webView.setWebChromeClient(new DialogWebChromeClient(this));
|
||||
webView.loadUrl(url);
|
||||
progress = (ProgressView) findViewById(R.id.progress);
|
||||
progress = findViewById(R.id.progress);
|
||||
|
||||
Snackbar.make(webView, R.string.apply_tip, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
@@ -19,10 +19,8 @@ package com.hippo.ehviewer.ui.fragment;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -199,10 +197,11 @@ public class AdvancedFragment extends PreferenceFragmentCompat
|
||||
Toast.makeText(getActivity(),
|
||||
ok ? getString(R.string.settings_advanced_dump_logcat_to, uri.toString()) :
|
||||
getString(R.string.settings_advanced_dump_logcat_failed), Toast.LENGTH_SHORT).show();
|
||||
}catch (Exception e){
|
||||
Toast.makeText(getActivity(), getString(R.string.settings_advanced_dump_logcat_failed), Toast.LENGTH_SHORT).show();}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Toast.makeText(getActivity(), getString(R.string.settings_advanced_dump_logcat_failed), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
super.onActivityResult(group, requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.hippo.ehviewer.ui.fragment;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
@@ -29,7 +28,6 @@ import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
@@ -22,12 +22,9 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.util.SparseBooleanArray;
|
||||
@@ -46,7 +43,6 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
@@ -84,7 +80,6 @@ import com.hippo.ehviewer.ui.GalleryActivity;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.ehviewer.widget.SimpleRatingView;
|
||||
import com.hippo.io.UniFileInputStreamPipe;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.streampipe.InputStreamPipe;
|
||||
import com.hippo.unifile.UniFile;
|
||||
@@ -110,8 +105,6 @@ import java.util.List;
|
||||
|
||||
public class DownloadsScene extends ToolbarScene
|
||||
implements DownloadManager.DownloadInfoListener,
|
||||
EasyRecyclerView.OnItemClickListener,
|
||||
EasyRecyclerView.OnItemLongClickListener,
|
||||
FabLayout.OnClickFabListener, FastScroller.OnDragHandlerListener {
|
||||
|
||||
public static final String KEY_GID = "gid";
|
||||
@@ -315,11 +308,12 @@ public class DownloadsScene extends ToolbarScene
|
||||
mLayoutManager.setColumnSize(resources.getDimensionPixelOffset(Settings.getDetailSizeResId()));
|
||||
mLayoutManager.setStrategy(AutoStaggeredGridLayoutManager.STRATEGY_MIN_SIZE);
|
||||
mRecyclerView.setLayoutManager(mLayoutManager);
|
||||
mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//mRecyclerView.setDrawSelectorOnTop(true);
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setClipChildren(false);
|
||||
//mRecyclerView.setOnItemClickListener(this);
|
||||
//mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setChoiceMode(EasyRecyclerView.CHOICE_MODE_MULTIPLE_CUSTOM);
|
||||
mRecyclerView.setCustomCheckedListener(new DownloadChoiceListener());
|
||||
// Cancel change animation
|
||||
@@ -535,7 +529,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
final Context context = getContext2();
|
||||
AssertUtils.assertNotNull(context);
|
||||
|
||||
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
|
||||
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
||||
toolbar.setTitle(R.string.download_labels);
|
||||
toolbar.inflateMenu(R.menu.drawer_download);
|
||||
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
|
||||
@@ -593,7 +587,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
|
||||
// TODO handle download label items update
|
||||
ListView listView = (ListView) view.findViewById(R.id.list_view);
|
||||
ListView listView = view.findViewById(R.id.list_view);
|
||||
listView.setAdapter(new ArrayAdapter<>(context, R.layout.item_simple_list, labels));
|
||||
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
@@ -643,8 +637,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemClick(int position) {
|
||||
Activity activity = getActivity2();
|
||||
EasyRecyclerView recyclerView = mRecyclerView;
|
||||
if (null == activity || null == recyclerView) {
|
||||
@@ -671,8 +664,7 @@ public class DownloadsScene extends ToolbarScene
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemLongClick(int position) {
|
||||
EasyRecyclerView recyclerView = mRecyclerView;
|
||||
if (recyclerView == null) {
|
||||
return false;
|
||||
@@ -1070,17 +1062,17 @@ public class DownloadsScene extends ToolbarScene
|
||||
public DownloadHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
thumb = (LoadImageView) itemView.findViewById(R.id.thumb);
|
||||
title = (TextView) itemView.findViewById(R.id.title);
|
||||
uploader = (TextView) itemView.findViewById(R.id.uploader);
|
||||
rating = (SimpleRatingView) itemView.findViewById(R.id.rating);
|
||||
category = (TextView) itemView.findViewById(R.id.category);
|
||||
thumb = itemView.findViewById(R.id.thumb);
|
||||
title = itemView.findViewById(R.id.title);
|
||||
uploader = itemView.findViewById(R.id.uploader);
|
||||
rating = itemView.findViewById(R.id.rating);
|
||||
category = itemView.findViewById(R.id.category);
|
||||
start = itemView.findViewById(R.id.start);
|
||||
stop = itemView.findViewById(R.id.stop);
|
||||
state = (TextView) itemView.findViewById(R.id.state);
|
||||
progressBar = (ProgressBar) itemView.findViewById(R.id.progress_bar);
|
||||
percent = (TextView) itemView.findViewById(R.id.percent);
|
||||
speed = (TextView) itemView.findViewById(R.id.speed);
|
||||
state = itemView.findViewById(R.id.state);
|
||||
progressBar = itemView.findViewById(R.id.progress_bar);
|
||||
percent = itemView.findViewById(R.id.percent);
|
||||
speed = itemView.findViewById(R.id.speed);
|
||||
|
||||
// TODO cancel on click listener when select items
|
||||
thumb.setOnClickListener(this);
|
||||
@@ -1183,6 +1175,9 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
// Update transition name
|
||||
ViewCompat.setTransitionName(holder.thumb, TransitionNameFactory.getThumbTransitionName(info.gid));
|
||||
|
||||
holder.itemView.setOnClickListener(v -> onItemClick(position));
|
||||
holder.itemView.setOnLongClickListener(v -> onItemLongClick(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1209,9 +1204,6 @@ public class DownloadsScene extends ToolbarScene
|
||||
|
||||
@Override
|
||||
public void onOutOfCustomChoice(EasyRecyclerView view) {
|
||||
if (mRecyclerView != null) {
|
||||
mRecyclerView.setOnItemLongClickListener(DownloadsScene.this);
|
||||
}
|
||||
if (mFabLayout != null) {
|
||||
mFabLayout.setExpanded(false);
|
||||
}
|
||||
|
||||
@@ -21,9 +21,7 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.text.InputType;
|
||||
@@ -80,7 +78,6 @@ import com.hippo.ehviewer.widget.EhDrawerLayout;
|
||||
import com.hippo.ehviewer.widget.GalleryInfoContentHelper;
|
||||
import com.hippo.ehviewer.widget.SearchBar;
|
||||
import com.hippo.refreshlayout.RefreshLayout;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.util.AppHelper;
|
||||
@@ -99,7 +96,7 @@ import java.util.List;
|
||||
|
||||
// TODO Get favorite, modify favorite, add favorite, what a mess!
|
||||
public class FavoritesScene extends BaseScene implements
|
||||
EasyRecyclerView.OnItemClickListener, EasyRecyclerView.OnItemLongClickListener,
|
||||
EasyRecyclerView.OnItemClickListener,
|
||||
FastScroller.OnDragHandlerListener, SearchBarMover.Helper, SearchBar.Helper,
|
||||
FabLayout.OnClickFabListener, FabLayout.OnExpandListener,
|
||||
EasyRecyclerView.CustomChoiceListener {
|
||||
@@ -254,7 +251,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
public View onCreateView2(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.scene_favorites, container, false);
|
||||
ContentLayout contentLayout = (ContentLayout) view.findViewById(R.id.content_layout);
|
||||
ContentLayout contentLayout = view.findViewById(R.id.content_layout);
|
||||
MainActivity activity = getActivity2();
|
||||
AssertUtils.assertNotNull(activity);
|
||||
mDrawerLayout = (EhDrawerLayout) ViewUtils.$$(activity, R.id.draw_view);
|
||||
@@ -275,11 +272,12 @@ public class FavoritesScene extends BaseScene implements
|
||||
contentLayout.getFastScroller().setOnDragHandlerListener(this);
|
||||
|
||||
mAdapter = new FavoritesAdapter(inflater, resources, mRecyclerView, Settings.getListMode());
|
||||
mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//mRecyclerView.setDrawSelectorOnTop(true);
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setClipChildren(false);
|
||||
//mRecyclerView.setOnItemClickListener(this);
|
||||
//mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setChoiceMode(EasyRecyclerView.CHOICE_MODE_MULTIPLE_CUSTOM);
|
||||
mRecyclerView.setCustomCheckedListener(this);
|
||||
|
||||
@@ -466,7 +464,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
}
|
||||
});
|
||||
|
||||
EasyRecyclerView recyclerView = (EasyRecyclerView) view.findViewById(R.id.recycler_view_drawer);
|
||||
EasyRecyclerView recyclerView = view.findViewById(R.id.recycler_view_drawer);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(context));
|
||||
recyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL));
|
||||
|
||||
@@ -578,9 +576,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Implemented(EasyRecyclerView.OnItemLongClickListener.class)
|
||||
public boolean onItemLongClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemLongClick(View view, int position) {
|
||||
// Can not into
|
||||
if (mRecyclerView != null && !mSearchMode) {
|
||||
if (!mRecyclerView.isInCustomChoice()) {
|
||||
@@ -875,6 +871,7 @@ public class FavoritesScene extends BaseScene implements
|
||||
@Override
|
||||
@Implemented(EasyRecyclerView.CustomChoiceListener.class)
|
||||
public void onItemCheckedStateChanged(EasyRecyclerView view, int position, long id, boolean checked) {
|
||||
|
||||
if (view.getCheckedItemCount() == 0) {
|
||||
view.outOfCustomChoiceMode();
|
||||
}
|
||||
@@ -1218,6 +1215,16 @@ public class FavoritesScene extends BaseScene implements
|
||||
return null != mHelper ? mHelper.size() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
void onItemClick(View view, int position) {
|
||||
FavoritesScene.this.onItemClick(null, view, position, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean onItemLongClick(View view, int position) {
|
||||
return FavoritesScene.this.onItemLongClick(view, position);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public GalleryInfo getDataAt(int position) {
|
||||
|
||||
@@ -172,6 +172,10 @@ abstract class GalleryAdapter extends RecyclerView.Adapter<GalleryHolder> {
|
||||
return holder;
|
||||
}
|
||||
|
||||
abstract void onItemClick(View view, int position);
|
||||
|
||||
abstract boolean onItemLongClick(View view, int position);
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return mType;
|
||||
@@ -238,6 +242,9 @@ abstract class GalleryAdapter extends RecyclerView.Adapter<GalleryHolder> {
|
||||
|
||||
// Update transition name
|
||||
ViewCompat.setTransitionName(holder.thumb, TransitionNameFactory.getThumbTransitionName(gi.gid));
|
||||
|
||||
holder.card.setOnClickListener(v -> onItemClick(holder.itemView, position));
|
||||
holder.card.setOnLongClickListener(v -> onItemLongClick(holder.itemView, position));
|
||||
}
|
||||
|
||||
@IntDef({TYPE_LIST, TYPE_GRID})
|
||||
|
||||
@@ -21,11 +21,8 @@ import android.annotation.SuppressLint;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
@@ -70,7 +67,6 @@ import com.hippo.ehviewer.client.data.GalleryDetail;
|
||||
import com.hippo.ehviewer.client.parser.VoteCommentParser;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.reveal.ViewAnimationUtils;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.text.Html;
|
||||
import com.hippo.text.URLImageGetter;
|
||||
@@ -95,8 +91,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class GalleryCommentsScene extends ToolbarScene
|
||||
implements EasyRecyclerView.OnItemClickListener,
|
||||
View.OnClickListener {
|
||||
implements View.OnClickListener {
|
||||
|
||||
public static final String TAG = GalleryCommentsScene.class.getSimpleName();
|
||||
|
||||
@@ -218,9 +213,9 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
LayoutUtils.dp2pix(context, 1));
|
||||
decoration.setShowLastDivider(true);
|
||||
mRecyclerView.addItemDecoration(decoration);
|
||||
mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
//mRecyclerView.setOnItemClickListener(this);
|
||||
mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), mRecyclerView.getPaddingTop(),
|
||||
mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingBottom() + paddingBottomFab);
|
||||
// Cancel change animator
|
||||
@@ -339,7 +334,7 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
LayoutUtils.dp2pix(context, 1));
|
||||
decoration.setPadding(ResourcesUtils.getAttrDimensionPixelOffset(context, R.attr.dialogPreferredPadding));
|
||||
rv.addItemDecoration(decoration);
|
||||
rv.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//rv.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
rv.setClipToPadding(false);
|
||||
builder.setView(rv).show();
|
||||
}
|
||||
@@ -405,8 +400,7 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
}).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position) {
|
||||
MainActivity activity = getActivity2();
|
||||
if (null == activity) {
|
||||
return false;
|
||||
@@ -928,6 +922,11 @@ public final class GalleryCommentsScene extends ToolbarScene
|
||||
return;
|
||||
}
|
||||
|
||||
holder.itemView.setOnClickListener(v -> onItemClick(mRecyclerView, holder.itemView, position));
|
||||
holder.itemView.setClickable(true);
|
||||
holder.itemView.setFocusable(true);
|
||||
|
||||
|
||||
if (holder instanceof ActualCommentHolder) {
|
||||
((ActualCommentHolder) holder).bind(mCommentList.comments[position]);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
@@ -46,7 +47,6 @@ import android.widget.TextView;
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
@@ -87,7 +87,6 @@ import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.ehviewer.ui.annotation.WholeLifeCircle;
|
||||
import com.hippo.ehviewer.widget.GalleryRatingBar;
|
||||
import com.hippo.reveal.ViewAnimationUtils;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.scene.TransitionHelper;
|
||||
@@ -973,14 +972,15 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
GalleryComment comment = comments[i];
|
||||
View v = inflater.inflate(R.layout.item_gallery_comment, mComments, false);
|
||||
mComments.addView(v, i);
|
||||
TextView user = (TextView) v.findViewById(R.id.user);
|
||||
TextView user = v.findViewById(R.id.user);
|
||||
user.setText(comment.user);
|
||||
TextView time = (TextView) v.findViewById(R.id.time);
|
||||
TextView time = v.findViewById(R.id.time);
|
||||
time.setText(ReadableTime.getTimeAgo(comment.time));
|
||||
ObservedTextView c = (ObservedTextView) v.findViewById(R.id.comment);
|
||||
ObservedTextView c = v.findViewById(R.id.comment);
|
||||
c.setMaxLines(5);
|
||||
c.setText(Html.fromHtml(comment.comment,
|
||||
new URLImageGetter(c, EhApplication.getConaco(context)), null));
|
||||
v.setBackgroundColor(Color.TRANSPARENT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1010,11 +1010,11 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene
|
||||
View view = inflater.inflate(R.layout.item_gallery_preview, mGridLayout, false);
|
||||
mGridLayout.addView(view);
|
||||
|
||||
LoadImageView image = (LoadImageView) view.findViewById(R.id.image);
|
||||
LoadImageView image = view.findViewById(R.id.image);
|
||||
previewSet.load(image, gd.gid, i);
|
||||
image.setTag(R.id.index, i);
|
||||
image.setOnClickListener(this);
|
||||
TextView text = (TextView) view.findViewById(R.id.text);
|
||||
TextView text = view.findViewById(R.id.text);
|
||||
text.setText(Integer.toString(previewSet.getPosition(i) + 1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.card.MaterialCardView;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.widget.SimpleRatingView;
|
||||
import com.hippo.widget.LoadImageView;
|
||||
@@ -38,6 +39,7 @@ class GalleryHolder extends RecyclerView.ViewHolder {
|
||||
public final TextView simpleLanguage;
|
||||
public final ImageView favourited;
|
||||
public final ImageView downloaded;
|
||||
public final MaterialCardView card;
|
||||
|
||||
public GalleryHolder(View itemView) {
|
||||
super(itemView);
|
||||
@@ -52,5 +54,6 @@ class GalleryHolder extends RecyclerView.ViewHolder {
|
||||
simpleLanguage = itemView.findViewById(R.id.simple_language);
|
||||
favourited = itemView.findViewById(R.id.favourited);
|
||||
downloaded = itemView.findViewById(R.id.downloaded);
|
||||
card = itemView.findViewById(R.id.card);
|
||||
}
|
||||
}
|
||||
@@ -20,8 +20,6 @@ import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -42,14 +40,13 @@ import com.hippo.ehviewer.UrlOpener;
|
||||
import com.hippo.ehviewer.client.EhUrl;
|
||||
import com.hippo.ehviewer.client.EhUtils;
|
||||
import com.hippo.ehviewer.client.data.GalleryDetail;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.yorozuya.AssertUtils;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public final class GalleryInfoScene extends ToolbarScene implements EasyRecyclerView.OnItemClickListener {
|
||||
public final class GalleryInfoScene extends ToolbarScene {
|
||||
|
||||
public static final String KEY_GALLERY_DETAIL = "gallery_detail";
|
||||
public static final String KEY_KEYS = "keys";
|
||||
@@ -158,8 +155,6 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
outState.putStringArrayList(KEY_VALUES, mValues);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView3(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
@@ -178,10 +173,10 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
LayoutUtils.dp2pix(context, 1));
|
||||
decoration.setPadding(context.getResources().getDimensionPixelOffset(R.dimen.keyline_margin));
|
||||
mRecyclerView.addItemDecoration(decoration);
|
||||
mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
//mRecyclerView.setOnItemClickListener(this);
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -202,8 +197,7 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemClick(int position) {
|
||||
Context context = getContext2();
|
||||
if (null != context && 0 != position && null != mValues) {
|
||||
if (position == INDEX_PARENT) {
|
||||
@@ -238,8 +232,8 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
public InfoHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
key = (TextView) itemView.findViewById(R.id.key);
|
||||
value = (TextView) itemView.findViewById(R.id.value);
|
||||
key = itemView.findViewById(R.id.key);
|
||||
value = itemView.findViewById(R.id.value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,6 +270,7 @@ public final class GalleryInfoScene extends ToolbarScene implements EasyRecycler
|
||||
holder.key.setText(mKeys.get(position));
|
||||
holder.value.setText(mValues.get(position));
|
||||
holder.itemView.setEnabled(position != 0);
|
||||
holder.itemView.setOnClickListener(v -> onItemClick(position));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,9 +22,7 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.text.InputType;
|
||||
@@ -90,7 +88,6 @@ import com.hippo.ehviewer.widget.GalleryInfoContentHelper;
|
||||
import com.hippo.ehviewer.widget.SearchBar;
|
||||
import com.hippo.ehviewer.widget.SearchLayout;
|
||||
import com.hippo.refreshlayout.RefreshLayout;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.util.AppHelper;
|
||||
@@ -113,8 +110,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public final class GalleryListScene extends BaseScene
|
||||
implements EasyRecyclerView.OnItemClickListener, EasyRecyclerView.OnItemLongClickListener,
|
||||
SearchBar.Helper, SearchBar.OnStateChangeListener, FastScroller.OnDragHandlerListener,
|
||||
implements SearchBar.Helper, SearchBar.OnStateChangeListener, FastScroller.OnDragHandlerListener,
|
||||
SearchLayout.Helper, SearchBarMover.Helper, View.OnClickListener, FabLayout.OnClickFabListener,
|
||||
FabLayout.OnExpandListener {
|
||||
|
||||
@@ -541,11 +537,12 @@ public final class GalleryListScene extends BaseScene
|
||||
|
||||
mAdapter = new GalleryListAdapter(inflater, resources,
|
||||
mRecyclerView, Settings.getListMode());
|
||||
mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//mRecyclerView.setDrawSelectorOnTop(true);
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setClipChildren(false);
|
||||
//mRecyclerView.setOnItemClickListener(this);
|
||||
//mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.addOnScrollListener(mOnScrollListener);
|
||||
|
||||
fastScroller.setPadding(fastScroller.getPaddingLeft(), fastScroller.getPaddingTop() + paddingTopSB,
|
||||
@@ -866,8 +863,7 @@ public final class GalleryListScene extends BaseScene
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemClick(View view, int position) {
|
||||
if (null == mHelper || null == mRecyclerView) {
|
||||
return false;
|
||||
}
|
||||
@@ -983,8 +979,7 @@ public final class GalleryListScene extends BaseScene
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemLongClick(View view, int position) {
|
||||
final Context context = getContext2();
|
||||
final MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity || null == mHelper) {
|
||||
@@ -1592,6 +1587,16 @@ public final class GalleryListScene extends BaseScene
|
||||
return null != mHelper ? mHelper.size() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
void onItemClick(View view, int position) {
|
||||
GalleryListScene.this.onItemClick(view, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean onItemLongClick(View view, int position) {
|
||||
return GalleryListScene.this.onItemLongClick(view, position);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public GalleryInfo getDataAt(int position) {
|
||||
|
||||
@@ -308,8 +308,8 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi
|
||||
public GalleryPreviewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
image = (LoadImageView) itemView.findViewById(R.id.image);
|
||||
text = (TextView) itemView.findViewById(R.id.text);
|
||||
image = itemView.findViewById(R.id.image);
|
||||
text = itemView.findViewById(R.id.text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,10 +19,7 @@ package com.hippo.ehviewer.ui.scene;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
@@ -31,7 +28,6 @@ import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||
@@ -62,7 +58,6 @@ import com.hippo.ehviewer.dao.HistoryInfo;
|
||||
import com.hippo.ehviewer.ui.CommonOperations;
|
||||
import com.hippo.ehviewer.ui.MainActivity;
|
||||
import com.hippo.ehviewer.widget.SimpleRatingView;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.scene.Announcer;
|
||||
import com.hippo.scene.SceneFragment;
|
||||
import com.hippo.util.DrawableManager;
|
||||
@@ -74,9 +69,7 @@ import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
import de.greenrobot.dao.query.LazyList;
|
||||
|
||||
public class HistoryScene extends ToolbarScene
|
||||
implements EasyRecyclerView.OnItemClickListener,
|
||||
EasyRecyclerView.OnItemLongClickListener {
|
||||
public class HistoryScene extends ToolbarScene {
|
||||
|
||||
/*---------------
|
||||
View life cycle
|
||||
@@ -130,11 +123,12 @@ public class HistoryScene extends ToolbarScene
|
||||
layoutManager.setColumnSize(resources.getDimensionPixelOffset(Settings.getDetailSizeResId()));
|
||||
layoutManager.setStrategy(AutoStaggeredGridLayoutManager.STRATEGY_MIN_SIZE);
|
||||
mRecyclerView.setLayoutManager(layoutManager);
|
||||
mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
mRecyclerView.setDrawSelectorOnTop(true);
|
||||
//mRecyclerView.setSelector(Ripple.generateRippleDrawable(context, !AttrResources.getAttrBoolean(context, R.attr.isLightTheme), new ColorDrawable(Color.TRANSPARENT)));
|
||||
//mRecyclerView.setDrawSelectorOnTop(true);
|
||||
mRecyclerView.setClipToPadding(false);
|
||||
mRecyclerView.setOnItemClickListener(this);
|
||||
mRecyclerView.setOnItemLongClickListener(this);
|
||||
mRecyclerView.setClipChildren(false);
|
||||
//mRecyclerView.setOnItemClickListener(this);
|
||||
//mRecyclerView.setOnItemLongClickListener(this);
|
||||
int interval = resources.getDimensionPixelOffset(R.dimen.gallery_list_interval);
|
||||
int paddingH = resources.getDimensionPixelOffset(R.dimen.gallery_list_margin_h);
|
||||
int paddingV = resources.getDimensionPixelOffset(R.dimen.gallery_list_margin_v);
|
||||
@@ -246,8 +240,7 @@ public class HistoryScene extends ToolbarScene
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemClick(View view, int position) {
|
||||
if (null == mLazyList) {
|
||||
return false;
|
||||
}
|
||||
@@ -264,8 +257,7 @@ public class HistoryScene extends ToolbarScene
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(EasyRecyclerView parent, View view, int position, long id) {
|
||||
public boolean onItemLongClick(View view, int position) {
|
||||
final Context context = getContext2();
|
||||
final MainActivity activity = getActivity2();
|
||||
if (null == context || null == activity || null == mLazyList) {
|
||||
@@ -334,13 +326,13 @@ public class HistoryScene extends ToolbarScene
|
||||
super(itemView);
|
||||
|
||||
card = itemView.findViewById(R.id.card);
|
||||
thumb = (LoadImageView) itemView.findViewById(R.id.thumb);
|
||||
title = (TextView) itemView.findViewById(R.id.title);
|
||||
uploader = (TextView) itemView.findViewById(R.id.uploader);
|
||||
rating = (SimpleRatingView) itemView.findViewById(R.id.rating);
|
||||
category = (TextView) itemView.findViewById(R.id.category);
|
||||
posted = (TextView) itemView.findViewById(R.id.posted);
|
||||
simpleLanguage = (TextView) itemView.findViewById(R.id.simple_language);
|
||||
thumb = itemView.findViewById(R.id.thumb);
|
||||
title = itemView.findViewById(R.id.title);
|
||||
uploader = itemView.findViewById(R.id.uploader);
|
||||
rating = itemView.findViewById(R.id.rating);
|
||||
category = itemView.findViewById(R.id.category);
|
||||
posted = itemView.findViewById(R.id.posted);
|
||||
simpleLanguage = itemView.findViewById(R.id.simple_language);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -409,6 +401,9 @@ public class HistoryScene extends ToolbarScene
|
||||
// Update transition name
|
||||
long gid = gi.gid;
|
||||
ViewCompat.setTransitionName(holder.thumb, TransitionNameFactory.getThumbTransitionName(gid));
|
||||
|
||||
holder.card.setOnClickListener(v -> onItemClick(holder.itemView, position));
|
||||
holder.card.setOnLongClickListener(v -> onItemLongClick(holder.itemView, position));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
import android.os.Bundle;
|
||||
@@ -27,7 +26,6 @@ import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@ import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
@@ -50,8 +50,8 @@ public abstract class ToolbarScene extends BaseScene {
|
||||
public final View onCreateView2(LayoutInflater inflater,
|
||||
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.scene_toolbar, container, false);
|
||||
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
|
||||
FrameLayout contentPanel = (FrameLayout) view.findViewById(R.id.content_panel);
|
||||
Toolbar toolbar = view.findViewById(R.id.toolbar);
|
||||
FrameLayout contentPanel = view.findViewById(R.id.content_panel);
|
||||
|
||||
View contentView = onCreateView3(inflater, contentPanel, savedInstanceState);
|
||||
if (contentView == null) {
|
||||
|
||||
@@ -18,13 +18,11 @@ package com.hippo.ehviewer.ui.scene;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.CookieSyncManager;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ import android.webkit.WebView;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.hippo.ehviewer.R;
|
||||
|
||||
|
||||
@@ -34,19 +34,16 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.hippo.android.resource.AttrResources;
|
||||
import com.hippo.easyrecyclerview.EasyRecyclerView;
|
||||
import com.hippo.easyrecyclerview.MarginItemDecoration;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.client.data.ListUrlBuilder;
|
||||
import com.hippo.ehviewer.client.exception.EhException;
|
||||
import com.hippo.ripple.Ripple;
|
||||
import com.hippo.widget.RadioGridGroup;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
@@ -121,17 +118,17 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC
|
||||
// Create normal view
|
||||
View normalView = mInflater.inflate(R.layout.search_normal, null);
|
||||
mNormalView = normalView;
|
||||
mCategoryTable = (CategoryTable) normalView.findViewById(R.id.search_category_table);
|
||||
mNormalSearchMode = (RadioGridGroup) normalView.findViewById(R.id.normal_search_mode);
|
||||
mNormalSearchModeHelp = (ImageView) normalView.findViewById(R.id.normal_search_mode_help);
|
||||
mEnableAdvanceSwitch = (SwitchCompat) normalView.findViewById(R.id.search_enable_advance);
|
||||
mCategoryTable = normalView.findViewById(R.id.search_category_table);
|
||||
mNormalSearchMode = normalView.findViewById(R.id.normal_search_mode);
|
||||
mNormalSearchModeHelp = normalView.findViewById(R.id.normal_search_mode_help);
|
||||
mEnableAdvanceSwitch = normalView.findViewById(R.id.search_enable_advance);
|
||||
mNormalSearchModeHelp.setOnClickListener(this);
|
||||
mEnableAdvanceSwitch.setOnCheckedChangeListener(SearchLayout.this);
|
||||
mEnableAdvanceSwitch.setSwitchPadding(resources.getDimensionPixelSize(R.dimen.switch_padding));
|
||||
|
||||
// Create advance view
|
||||
mAdvanceView = mInflater.inflate(R.layout.search_advance, null);
|
||||
mTableAdvanceSearch = (AdvanceSearchTable) mAdvanceView.findViewById(R.id.search_advance_search_table);
|
||||
mTableAdvanceSearch = mAdvanceView.findViewById(R.id.search_advance_search_table);
|
||||
|
||||
// Create image view
|
||||
mImageView = (ImageSearchLayout) mInflater.inflate(R.layout.search_image, null);
|
||||
@@ -139,7 +136,7 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC
|
||||
|
||||
// Create action view
|
||||
mActionView = mInflater.inflate(R.layout.search_action, null);
|
||||
mAction = (TextView) mActionView.findViewById(R.id.action);
|
||||
mAction = mActionView.findViewById(R.id.action);
|
||||
mAction.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@@ -381,8 +378,8 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC
|
||||
view = mActionView;
|
||||
} else {
|
||||
view = mInflater.inflate(R.layout.search_category, parent, false);
|
||||
TextView title = (TextView) view.findViewById(R.id.category_title);
|
||||
FrameLayout content = (FrameLayout) view.findViewById(R.id.category_content);
|
||||
TextView title = view.findViewById(R.id.category_title);
|
||||
FrameLayout content = view.findViewById(R.id.category_content);
|
||||
switch (viewType) {
|
||||
case ITEM_TYPE_NORMAL:
|
||||
title.setText(R.string.search_normal);
|
||||
|
||||
@@ -59,7 +59,7 @@ public class SeekBarPreference extends Preference implements SeekBar.OnSeekBarCh
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
SeekBar seekBar = (SeekBar) holder.itemView.findViewById(R.id.seekbar);
|
||||
SeekBar seekBar = holder.itemView.findViewById(R.id.seekbar);
|
||||
seekBar.setOnSeekBarChangeListener(this);
|
||||
seekBar.setMax(mMax);
|
||||
seekBar.setProgress(mProgress);
|
||||
|
||||
@@ -17,19 +17,14 @@
|
||||
package com.hippo.reveal;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
|
||||
import com.hippo.yorozuya.SimpleAnimatorListener;
|
||||
|
||||
public final class ViewAnimationUtils {
|
||||
// http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported
|
||||
|
||||
public static Animator createCircularReveal(View view,
|
||||
int centerX, int centerY, float startRadius, float endRadius) {
|
||||
return android.view.ViewAnimationUtils.createCircularReveal(
|
||||
view, centerX, centerY, startRadius, endRadius);
|
||||
return android.view.ViewAnimationUtils.createCircularReveal(
|
||||
view, centerX, centerY, startRadius, endRadius);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,6 @@ package com.hippo.util;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@@ -17,10 +17,8 @@
|
||||
package com.hippo.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.hippo.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.view.WindowManager;
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.util.AttributeSet;
|
||||
@@ -35,7 +34,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.hotspot.Hotspot;
|
||||
import com.hippo.hotspot.Hotspotable;
|
||||
import com.hippo.yorozuya.AnimationUtils;
|
||||
import com.hippo.yorozuya.MathUtils;
|
||||
|
||||
@@ -86,13 +86,13 @@ public class ContentLayout extends FrameLayout {
|
||||
private void init(Context context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.widget_content_layout, this);
|
||||
|
||||
mProgressView = (ProgressView) findViewById(R.id.progress);
|
||||
mTipView = (TextView) findViewById(R.id.tip);
|
||||
mContentView = (ViewGroup) findViewById(R.id.content_view);
|
||||
mProgressView = findViewById(R.id.progress);
|
||||
mTipView = findViewById(R.id.tip);
|
||||
mContentView = findViewById(R.id.content_view);
|
||||
|
||||
mRefreshLayout = (RefreshLayout) mContentView.findViewById(R.id.refresh_layout);
|
||||
mFastScroller = (FastScroller) mContentView.findViewById(R.id.fast_scroller);
|
||||
mRecyclerView = (EasyRecyclerView) mRefreshLayout.findViewById(R.id.recycler_view);
|
||||
mRefreshLayout = mContentView.findViewById(R.id.refresh_layout);
|
||||
mFastScroller = mContentView.findViewById(R.id.fast_scroller);
|
||||
mRecyclerView = mRefreshLayout.findViewById(R.id.recycler_view);
|
||||
|
||||
mFastScroller.attachToRecyclerView(mRecyclerView);
|
||||
HandlerDrawable drawable = new HandlerDrawable();
|
||||
|
||||
@@ -17,17 +17,10 @@
|
||||
package com.hippo.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ViewOutlineProvider;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
|
||||
public class ShadowLinearLayout extends LinearLayout {
|
||||
|
||||
Reference in new issue
Block a user