diff --git a/res/layout/applistitem.xml b/res/layout/applistitem.xml index bd8be5f7c..e9be8e80f 100644 --- a/res/layout/applistitem.xml +++ b/res/layout/applistitem.xml @@ -9,14 +9,17 @@ android:paddingRight="3dp" android:baselineAligned="false" > + + android:layout_toRightOf="@id/icon" /> + + + android:layout_below="@id/summary" /> - - + android:layout_alignParentRight="true" + android:layout_alignBaseline="@id/status" /> diff --git a/res/values/dimen.xml b/res/values/dimen.xml index 6fe5117c7..f20a66205 100644 --- a/res/values/dimen.xml +++ b/res/values/dimen.xml @@ -1,4 +1,5 @@ - 3dp + 48dp + 32dp diff --git a/src/org/fdroid/fdroid/views/AppListAdapter.java b/src/org/fdroid/fdroid/views/AppListAdapter.java index 1edb46ed9..0289b752c 100644 --- a/src/org/fdroid/fdroid/views/AppListAdapter.java +++ b/src/org/fdroid/fdroid/views/AppListAdapter.java @@ -14,15 +14,24 @@ import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.compat.LayoutCompat; +import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; +import com.nostra13.universalimageloader.core.assist.ImageScaleType; abstract public class AppListAdapter extends BaseAdapter { private List items = new ArrayList(); private Context mContext; + private DisplayImageOptions displayImageOptions; public AppListAdapter(Context context) { mContext = context; + + DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder(); + builder.imageScaleType(ImageScaleType.NONE); // let android scale + builder.resetViewBeforeLoading(true); // required for multiple loading + builder.cacheInMemory(true); // default even if doc says otherwise + displayImageOptions = builder.build(); } abstract protected boolean showStatusUpdate(); @@ -80,9 +89,10 @@ abstract public class AppListAdapter extends BaseAdapter { iconContainer.setVisibility(visibleOnCompact); status.setVisibility(notVisibleOnCompact); license.setVisibility(notVisibleOnCompact); - layoutSummary(summary); - ImageLoader.getInstance().displayImage(app.iconUrl, icon); + layoutIcon(icon, compact); + ImageLoader.getInstance().displayImage(app.iconUrl, icon, + displayImageOptions); if (!compact) { status.setText(getVersionInfo(app)); @@ -116,38 +126,6 @@ abstract public class AppListAdapter extends BaseAdapter { return convertView; } - /** - * In compact view, the summary sites next to the icon, below the name. - * In non-compact view, it sits under the icon, with some padding pushing - * it away from the left margin. - */ - private void layoutSummary(TextView summaryView) { - - if (Preferences.get().hasCompactLayout()) { - - RelativeLayout.LayoutParams summaryLayout = - new RelativeLayout.LayoutParams( - RelativeLayout.LayoutParams.WRAP_CONTENT, - RelativeLayout.LayoutParams.WRAP_CONTENT); - summaryLayout.addRule(RelativeLayout.BELOW, R.id.name); - summaryLayout.addRule(LayoutCompat.RelativeLayout.END_OF, R.id.icon); - summaryView.setLayoutParams(summaryLayout); - summaryView.setPadding(0,0,0,0); - - } else { - - RelativeLayout.LayoutParams summaryLayout = - new RelativeLayout.LayoutParams( - RelativeLayout.LayoutParams.MATCH_PARENT, - RelativeLayout.LayoutParams.WRAP_CONTENT); - summaryLayout.addRule(RelativeLayout.BELOW, R.id.icon); - summaryView.setLayoutParams(summaryLayout); - float padding = mContext.getResources().getDimension(R.dimen.applist_summary_padding); - summaryView.setPadding((int)padding, 0, 0, 0); - - } - } - private String getVersionInfo(DB.App app) { if (app.installedVersion != null) { if (app.toUpdate) { @@ -163,4 +141,18 @@ abstract public class AppListAdapter extends BaseAdapter { } } + private void layoutIcon(ImageView icon, boolean compact) { + int size = (int)mContext.getResources().getDimension((compact + ? R.dimen.applist_icon_compact_size + : R.dimen.applist_icon_normal_size)); + + RelativeLayout.LayoutParams params = + (RelativeLayout.LayoutParams)icon.getLayoutParams(); + + params.height = size; + params.width = size; + + icon.setLayoutParams(params); + } + }