Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java

Issue 15117003: Merge 199280 "Added fadeout effect for textview in navigation po..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1453/src/
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java
===================================================================
--- chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java (revision 200074)
+++ chrome/android/java/src/org/chromium/chrome/browser/NavigationPopup.java (working copy)
@@ -25,6 +25,7 @@
import org.chromium.base.CalledByNative;
import org.chromium.base.ThreadUtils;
+import org.chromium.ui.LocalizationUtils;
import org.chromium.chrome.R;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.NavigationClient;
@@ -40,10 +41,7 @@
*/
public class NavigationPopup extends ListPopupWindow implements AdapterView.OnItemClickListener {
- private static final int LIST_ITEM_HEIGHT_DP = 48;
private static final int FAVICON_SIZE_DP = 16;
- private static final int PADDING_DP = 8;
- private static final int TEXT_SIZE_SP = 18;
private static final int MAXIMUM_HISTORY_ITEMS = 8;
@@ -51,10 +49,9 @@
private final NavigationClient mNavigationClient;
private final NavigationHistory mHistory;
private final NavigationAdapter mAdapter;
+ private final ListItemFactory mListItemFactory;
- private final int mListItemHeight;
private final int mFaviconSize;
- private final int mPadding;
private int mNativeNavigationPopup;
@@ -75,9 +72,7 @@
mAdapter = new NavigationAdapter();
float density = mContext.getResources().getDisplayMetrics().density;
- mListItemHeight = (int) (density * LIST_ITEM_HEIGHT_DP);
mFaviconSize = (int) (density * FAVICON_SIZE_DP);
- mPadding = (int) (density * PADDING_DP);
setModal(true);
setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
@@ -85,6 +80,8 @@
setOnItemClickListener(this);
setAdapter(new HeaderViewListAdapter(null, null, mAdapter));
+
+ mListItemFactory = new ListItemFactory(context);
}
/**
@@ -142,17 +139,6 @@
dismiss();
}
- private TextView createListItem() {
- TextView view = new TextView(mContext);
- view.setSingleLine();
- view.setTextSize(TEXT_SIZE_SP);
- view.setMinimumHeight(mListItemHeight);
- view.setGravity(Gravity.CENTER_VERTICAL);
- view.setCompoundDrawablePadding(mPadding);
- view.setPadding(mPadding, 0, mPadding, 0);
- return view;
- }
-
private void updateBitmapForTextView(TextView view, Bitmap bitmap) {
Drawable faviconDrawable = null;
if (bitmap != null) {
@@ -165,6 +151,56 @@
view.setCompoundDrawables(faviconDrawable, null, null, null);
}
+ private static class ListItemFactory {
+ private static final int LIST_ITEM_HEIGHT_DP = 48;
+ private static final int PADDING_DP = 8;
+ private static final int TEXT_SIZE_SP = 18;
+ private static final float FADE_LENGTH_DP = 25.0f;
+ private static final float FADE_STOP = 0.75f;
+
+ int mFadeEdgeLength;
+ int mFadePadding;
+ int mListItemHeight;
+ int mPadding;
+ boolean mIsLayoutDirectionRTL;
+ Context mContext;
+
+ public ListItemFactory(Context context) {
+ mContext = context;
+ computeFadeDimensions();
+ }
+
+ private void computeFadeDimensions() {
+ // Fade with linear gradient starting 25dp from right margin.
+ // Reaches 0% opacity at 75% length. (Simulated with extra padding)
+ float density = mContext.getResources().getDisplayMetrics().density;
+ float fadeLength = (FADE_LENGTH_DP * density);
+ mFadeEdgeLength = (int)(fadeLength * FADE_STOP);
+ mFadePadding = (int)(fadeLength * (1 - FADE_STOP));
+ mListItemHeight = (int) (density * LIST_ITEM_HEIGHT_DP);
+ mPadding = (int) (density * PADDING_DP);
+ mIsLayoutDirectionRTL = LocalizationUtils.isSystemLayoutDirectionRtl();
+ }
+
+ public TextView createListItem() {
+ TextView view = new TextView(mContext);
+ view.setFadingEdgeLength(mFadeEdgeLength);
+ view.setHorizontalFadingEdgeEnabled(true);
+ view.setSingleLine();
+ view.setTextSize(TEXT_SIZE_SP);
+ view.setMinimumHeight(mListItemHeight);
+ view.setGravity(Gravity.CENTER_VERTICAL);
+ view.setCompoundDrawablePadding(mPadding);
+ if (!mIsLayoutDirectionRTL) {
+ view.setPadding(mPadding, 0, mPadding + mFadePadding , 0);
+ }
+ else {
+ view.setPadding(mPadding + mFadePadding, 0, mPadding, 0);
+ }
+ return view;
+ }
+ }
+
private class NavigationAdapter extends BaseAdapter {
@Override
public int getCount() {
@@ -187,7 +223,7 @@
if (convertView != null && convertView instanceof TextView) {
view = (TextView) convertView;
} else {
- view = createListItem();
+ view = mListItemFactory.createListItem();
}
NavigationEntry entry = (NavigationEntry) getItem(position);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698