diff options
author | Michael Kolb <kolby@google.com> | 2011-05-29 12:18:52 -0700 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-05-31 17:17:10 -0700 |
commit | db343c57c970bb2e3b8f269fc4cbe90546357257 (patch) | |
tree | 5072ad940e0d225128b201e3b0382c48ad59a7e0 | |
parent | aed9c54d8e67bb683a5a415b3775525a3ac00508 (diff) | |
download | packages_apps_Browser-db343c57c970bb2e3b8f269fc4cbe90546357257.zip packages_apps_Browser-db343c57c970bb2e3b8f269fc4cbe90546357257.tar.gz packages_apps_Browser-db343c57c970bb2e3b8f269fc4cbe90546357257.tar.bz2 |
calculate scroller padding
Change-Id: I727c425e096220ae1230e3fbe0f1edb4b3fea8ed
-rw-r--r-- | res/layout/nav_tab_view.xml | 2 | ||||
-rw-r--r-- | res/values-land/dimensions.xml | 1 | ||||
-rw-r--r-- | res/values/dimensions.xml | 3 | ||||
-rw-r--r-- | src/com/android/browser/NavTabScroller.java | 64 | ||||
-rw-r--r-- | src/com/android/browser/NavTabView.java | 17 |
5 files changed, 55 insertions, 32 deletions
diff --git a/res/layout/nav_tab_view.xml b/res/layout/nav_tab_view.xml index 7d9263d..5a71c71 100644 --- a/res/layout/nav_tab_view.xml +++ b/res/layout/nav_tab_view.xml @@ -79,7 +79,7 @@ android:src="@drawable/ic_stop_holo_dark" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="right|bottom" + android:layout_gravity="bottom|right" android:background="@drawable/navtab_close_background" /> </FrameLayout> </LinearLayout> diff --git a/res/values-land/dimensions.xml b/res/values-land/dimensions.xml index e69bd82..df4bc84 100644 --- a/res/values-land/dimensions.xml +++ b/res/values-land/dimensions.xml @@ -17,5 +17,4 @@ <dimen name="preference_widget_width">72dp</dimen> <dimen name="nav_tab_width">280dip</dimen> <dimen name="nav_tab_height">240dip</dimen> - <dimen name="nav_scroller_padding">101dip</dimen> </resources> diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml index e1ae0eb..dbb0c60 100644 --- a/res/values/dimensions.xml +++ b/res/values/dimensions.xml @@ -71,5 +71,6 @@ <dimen name="tab_capture_size">160dp</dimen> <dimen name="nav_tab_width">280dip</dimen> <dimen name="nav_tab_height">280dip</dimen> - <dimen name="nav_scroller_padding">68dip</dimen> + <dimen name="nav_tab_text_normal">18sp</dimen> + <dimen name="nav_tab_text_small">14sp</dimen> </resources> diff --git a/src/com/android/browser/NavTabScroller.java b/src/com/android/browser/NavTabScroller.java index cbb2cfd..9434ff0 100644 --- a/src/com/android/browser/NavTabScroller.java +++ b/src/com/android/browser/NavTabScroller.java @@ -66,6 +66,25 @@ public class NavTabScroller extends FrameLayout { addView(sview); } + @Override + protected void onMeasure(int wspec, int hspec) { + super.onMeasure(wspec, hspec); + calcPadding(); + } + + private void calcPadding() { + if (mAdapter.getCount() > 0) { + View v = mContentView.getChildAt(0); + if (mOrientation == Configuration.ORIENTATION_PORTRAIT) { + int pad = (getMeasuredHeight() - v.getMeasuredHeight()) / 2; + mContentView.setPadding(0, pad, 0, pad); + } else { + int pad = (getMeasuredWidth() - v.getMeasuredWidth()) / 2; + mContentView.setPadding(pad, 0, pad, 0); + } + } + } + protected void setAdapter(BaseAdapter adapter) { mAdapter = adapter; mAdapter.registerDataSetObserver(new DataSetObserver() { @@ -151,8 +170,6 @@ public class NavTabScroller extends FrameLayout { mContentView.setOrientation(LinearLayout.VERTICAL); setVerticalScrollBarEnabled(false); setSmoothScrollingEnabled(true); - int pad = ctx.getResources().getDimensionPixelSize(R.dimen.nav_scroller_padding); - mContentView.setPadding(0, pad, 0, pad); mContentView.setLayoutParams( new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); addView(mContentView); @@ -185,10 +202,6 @@ public class NavTabScroller extends FrameLayout { if (sel != mSelected) { setSelection(sel); } - if (!isCentered(mSelected)) { - NavTabView ntv = (NavTabView) getSelectedView(); - ntv.setHighlighted(false); - } } } @@ -201,6 +214,11 @@ public class NavTabScroller extends FrameLayout { if (mScroller.isFinished() && dragged) { snapToSelected(); } + } else if (MotionEvent.ACTION_MOVE == evt.getActionMasked()) { + NavTabView ntv = (NavTabView) getSelectedView(); + if (mIsBeingDragged && ntv.isHighlighted()) { + ntv.setHighlighted(false); + } } return result; } @@ -215,17 +233,11 @@ public class NavTabScroller extends FrameLayout { // reset snap scrolling flag mSnapScroll = false; NavTabView ntv = (NavTabView) getSelectedView(); - ntv.setHighlighted(isCentered(mSelected)); + ntv.setHighlighted(true); } } } - private boolean isCentered(int ix) { - int midy = getScrollY() + (getTop() + getBottom()) / 2; - View v = mContentView.getChildAt(ix); - return (v.getTop() + v.getBottom()) / 2 == midy; - } - private void snapToSelected() { View v = mContentView.getChildAt(mSelected); int top = (v.getTop() + v.getBottom()) / 2; @@ -234,6 +246,9 @@ public class NavTabScroller extends FrameLayout { // snap to selected mSnapScroll = true; smoothScrollTo(0, top); + } else { + NavTabView ntv = (NavTabView) getSelectedView(); + ntv.setHighlighted(true); } } @@ -270,12 +285,9 @@ public class NavTabScroller extends FrameLayout { mContentView.setOrientation(LinearLayout.HORIZONTAL); setVerticalScrollBarEnabled(false); setSmoothScrollingEnabled(true); - int pad = ctx.getResources().getDimensionPixelSize(R.dimen.nav_scroller_padding); - mContentView.setPadding(pad, 0, pad, 0); mContentView.setLayoutParams( new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); addView(mContentView); - } public LinearLayout getContentView() { @@ -304,10 +316,6 @@ public class NavTabScroller extends FrameLayout { if (sel != mSelected) { setSelection(sel); } - if (!isCentered(mSelected)) { - NavTabView ntv = (NavTabView) getSelectedView(); - ntv.setHighlighted(false); - } } } @@ -320,6 +328,11 @@ public class NavTabScroller extends FrameLayout { if (mScroller.isFinished() && dragged) { snapToSelected(); } + } else if (MotionEvent.ACTION_MOVE == evt.getActionMasked()) { + NavTabView ntv = (NavTabView) getSelectedView(); + if (mIsBeingDragged && ntv.isHighlighted()) { + ntv.setHighlighted(false); + } } return result; } @@ -334,17 +347,11 @@ public class NavTabScroller extends FrameLayout { // reset snap scrolling flag mSnapScroll = false; NavTabView ntv = (NavTabView) getSelectedView(); - ntv.setHighlighted(isCentered(mSelected)); + ntv.setHighlighted(true); } } } - private boolean isCentered(int ix) { - int midx = getScrollX() + getWidth() / 2; - View v = mContentView.getChildAt(ix); - return (v.getLeft() + v.getRight()) / 2 == midx; - } - private void snapToSelected() { View v = mContentView.getChildAt(mSelected); int left = (v.getLeft() + v.getRight()) / 2; @@ -353,6 +360,9 @@ public class NavTabScroller extends FrameLayout { // snap to selected mSnapScroll = true; smoothScrollTo(left, 0); + } else { + NavTabView ntv = (NavTabView) getSelectedView(); + ntv.setHighlighted(true); } } diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java index 14453dc..ec42c94 100644 --- a/src/com/android/browser/NavTabView.java +++ b/src/com/android/browser/NavTabView.java @@ -17,8 +17,10 @@ package com.android.browser; import android.content.Context; +import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.util.AttributeSet; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -42,6 +44,9 @@ public class NavTabView extends LinearLayout { OnClickListener mClickListener; boolean mHighlighted; Drawable mTitleBg; + Drawable mUrlBg; + float mMediumTextSize; + float mSmallTextSize; public NavTabView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -59,6 +64,9 @@ public class NavTabView extends LinearLayout { } private void init() { + final Resources res = mContext.getResources(); + mMediumTextSize = res.getDimension(R.dimen.nav_tab_text_normal); + mSmallTextSize = res.getDimension(R.dimen.nav_tab_text_small); LayoutInflater.from(mContext).inflate(R.layout.nav_tab_view, this); mContainer = (FrameLayout) findViewById(R.id.tab_view); @@ -68,9 +76,10 @@ public class NavTabView extends LinearLayout { mTitle = (TextView) findViewById(R.id.title); mFavicon = (ImageView) findViewById(R.id.favicon); mTitleBar = findViewById(R.id.titlebar); - mTitleBg = mContext.getResources().getDrawable(R.drawable.bg_urlbar); + mTitleBg = res.getDrawable(R.drawable.bg_urlbar); + mUrlBg = res.getDrawable( + com.android.internal.R.drawable.edit_text_holo_dark); setState(false); - // refresh titlebar } protected boolean isRefresh(View v) { @@ -108,6 +117,8 @@ public class NavTabView extends LinearLayout { ? View.VISIBLE : View.GONE); mTitleBar.setBackgroundDrawable(mTitleBg); mClose.setVisibility(View.VISIBLE); + mTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMediumTextSize); + mTitle.setBackgroundDrawable(mUrlBg); } else { setAlpha(0.8f); mForward.setVisibility(View.GONE); @@ -115,6 +126,8 @@ public class NavTabView extends LinearLayout { mFavicon.setVisibility(View.INVISIBLE); mClose.setVisibility(View.GONE); mTitleBar.setBackgroundDrawable(null); + mTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, mSmallTextSize); + mTitle.setBackgroundDrawable(null); } setTitle(); } |