Bug 808663 - Use nearest neighbor scaling for favicons in awesomescreen. r=bnicholson

This commit is contained in:
Wes Johnston 2012-11-06 19:51:06 -08:00
parent 5bf2c472b4
commit 05e54fd0c4
12 changed files with 34 additions and 14 deletions

View File

@ -97,6 +97,7 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
private TranslateAnimation mTitleSlideRight;
private int mCount;
private int mFaviconSize;
private static final int TABS_CONTRACTED = 1;
private static final int TABS_EXPANDED = 2;
@ -226,6 +227,7 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
mFavicon.setOnClickListener(faviconListener);
if (Build.VERSION.SDK_INT >= 16)
mFavicon.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mFaviconSize = Math.round(mActivity.getResources().getDimension(R.dimen.browser_toolbar_favicon_size));
mSiteSecurity = (ImageButton) mLayout.findViewById(R.id.site_security);
mSiteSecurity.setOnClickListener(faviconListener);
@ -683,10 +685,12 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
if (Tabs.getInstance().getSelectedTab().getState() == Tab.STATE_LOADING)
return;
if (image != null)
if (image != null) {
image = Bitmap.createScaledBitmap(image, mFaviconSize, mFaviconSize, false);
mFavicon.setImageBitmap(image);
else
} else {
mFavicon.setImageResource(R.drawable.favicon);
}
}
public void setSecurityMode(String mode) {

View File

@ -810,7 +810,8 @@ public class AllPagesTab extends AwesomeBarTab implements GeckoEventListener {
private void displayFavicon(AwesomeEntryViewHolder viewHolder) {
final String url = viewHolder.urlView.getText().toString();
Favicons favicons = GeckoApp.mAppContext.getFavicons();
viewHolder.faviconView.setImageBitmap(favicons.getFaviconFromMemCache(url));
Bitmap bitmap = favicons.getFaviconFromMemCache(url);
updateFavicon(viewHolder.faviconView, bitmap);
}
private void updateFavicons() {

View File

@ -41,9 +41,13 @@ abstract public class AwesomeBarTab {
// FIXME: This value should probably come from a prefs key
public static final int MAX_RESULTS = 100;
protected Context mContext = null;
private static int sFaviconSize = -1;
public AwesomeBarTab(Context context) {
mContext = context;
if (sFaviconSize < 0) {
sFaviconSize = Math.round(mContext.getResources().getDimension(R.dimen.awesomebar_row_favicon_size));
}
}
public void setListTouchListener(View.OnTouchListener listener) {
@ -94,6 +98,15 @@ abstract public class AwesomeBarTab {
faviconView.setImageDrawable(null);
} else {
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
updateFavicon(faviconView, bitmap);
}
}
protected void updateFavicon(ImageView faviconView, Bitmap bitmap) {
if (bitmap == null) {
faviconView.setImageDrawable(null);
} else {
bitmap = Bitmap.createScaledBitmap(bitmap, sFaviconSize, sFaviconSize, false);
faviconView.setImageBitmap(bitmap);
}
}

View File

@ -173,7 +173,7 @@ public class HistoryTab extends AwesomeBarTab {
viewHolder.faviconView.setImageDrawable(null);
} else {
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
viewHolder.faviconView.setImageBitmap(bitmap);
updateFavicon(viewHolder.faviconView, bitmap);
}
Integer bookmarkId = (Integer) historyItem.get(Combined.BOOKMARK_ID);

View File

@ -74,7 +74,7 @@
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="29.33dip"
android:layout_width="@dimen/browser_toolbar_favicon_size"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:paddingLeft="8dip"

View File

@ -82,7 +82,7 @@
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="29.33dip"
android:layout_width="@dimen/browser_toolbar_favicon_size"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:paddingLeft="8dip"

View File

@ -103,7 +103,7 @@
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="29.33dip"
android:layout_width="@dimen/browser_toolbar_favicon_size"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:paddingLeft="8dip"

View File

@ -133,7 +133,7 @@
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="29.33dip"
android:layout_width="@dimen/browser_toolbar_favicon_size"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:paddingLeft="8dip"

View File

@ -9,13 +9,13 @@
android:padding="6dip">
<ImageView android:id="@+id/favicon"
android:layout_width="32dip"
android:layout_height="32dip"
android:layout_width="@dimen/awesomebar_row_favicon_size"
android:layout_height="@dimen/awesomebar_row_favicon_size"
android:layout_marginLeft="6dip"
android:layout_marginRight="6dip"
android:layout_centerVertical="true"
android:minWidth="32dip"
android:minHeight="32dip"
android:minWidth="@dimen/awesomebar_row_favicon_size"
android:minHeight="@dimen/awesomebar_row_favicon_size"
android:scaleType="fitCenter"/>
<ImageView android:id="@+id/bookmark_icon"

View File

@ -74,7 +74,7 @@
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="29.33dip"
android:layout_width="@dimen/browser_toolbar_favicon_size"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:paddingLeft="8dip"

View File

@ -83,7 +83,7 @@
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="29.33dip"
android:layout_width="@dimen/browser_toolbar_favicon_size"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:paddingLeft="8dip"

View File

@ -15,10 +15,12 @@
<dimen name="autocomplete_row_height">32dp</dimen>
<dimen name="awesomebar_header_row_height">20dp</dimen>
<dimen name="awesomebar_row_height">48dp</dimen>
<dimen name="awesomebar_row_favicon_size">32dp</dimen>
<dimen name="awesomebar_tab_transparency_height">38dp</dimen>
<dimen name="browser_toolbar_height">48dp</dimen>
<dimen name="browser_toolbar_icon_width">36dp</dimen>
<dimen name="browser_toolbar_lock_width">21.33dp</dimen>
<dimen name="browser_toolbar_favicon_size">29.33dip</dimen>
<dimen name="doorhanger_arrow_width">44dp</dimen>
<dimen name="flow_layout_spacing">6dp</dimen>
<dimen name="local_tab_row_height">108dp</dimen>