Loading core/java/android/widget/ActivityChooserModel.java +11 −0 Original line number Diff line number Diff line Loading @@ -663,6 +663,17 @@ public class ActivityChooserModel extends DataSetObservable { } } /** * Gets the history size. * * @return The history size. */ public int getHistorySize() { synchronized (mInstanceLock) { return mHistoricalRecords.size(); } } @Override protected void finalize() throws Throwable { super.finalize(); Loading core/java/android/widget/ActivityChooserView.java +41 −18 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.View.MeasureSpec; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; Loading Loading @@ -75,6 +76,11 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod */ private final LinearLayout mActivityChooserContent; /** * Stores the background drawable to allow hiding and latter showing. */ private final Drawable mActivityChooserContentBackground; /** * The expand activities action button; */ Loading Loading @@ -194,12 +200,15 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod Drawable expandActivityOverflowButtonDrawable = attributesArray.getDrawable( R.styleable.ActivityChooserView_expandActivityOverflowButtonDrawable); attributesArray.recycle(); LayoutInflater inflater = LayoutInflater.from(mContext); inflater.inflate(R.layout.activity_chooser_view, this, true); mCallbacks = new Callbacks(); mActivityChooserContent = (LinearLayout) findViewById(R.id.activity_chooser_view_content); mActivityChooserContentBackground = mActivityChooserContent.getBackground(); mDefaultActivityButton = (FrameLayout) findViewById(R.id.default_activity_button); mDefaultActivityButton.setOnClickListener(mCallbacks); Loading @@ -217,7 +226,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod @Override public void onChanged() { super.onChanged(); updateButtons(); updateAppearance(); } }); Loading Loading @@ -352,9 +361,16 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { mActivityChooserContent.measure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(mActivityChooserContent.getMeasuredWidth(), mActivityChooserContent.getMeasuredHeight()); View child = mActivityChooserContent; // If the default action is not visible we want to be as tall as the // ActionBar so if this widget is used in the latter it will look as // a normal action button. if (mDefaultActivityButton.getVisibility() != VISIBLE) { heightMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY); } measureChild(child, widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(child.getMeasuredWidth(), child.getMeasuredHeight()); } @Override Loading @@ -367,11 +383,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod } } @Override protected void onDraw(Canvas canvas) { mActivityChooserContent.onDraw(canvas); } public ActivityChooserModel getDataModel() { return mAdapter.getDataModel(); } Loading Loading @@ -417,21 +428,29 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod /** * Updates the buttons state. */ private void updateButtons() { final int activityCount = mAdapter.getActivityCount(); if (activityCount > 0) { mDefaultActivityButton.setVisibility(VISIBLE); private void updateAppearance() { // Expand overflow button. if (mAdapter.getCount() > 0) { mExpandActivityOverflowButton.setEnabled(true); } else { mExpandActivityOverflowButton.setEnabled(false); } // Default activity button. final int activityCount = mAdapter.getActivityCount(); final int historySize = mAdapter.getHistorySize(); if (activityCount > 0 && historySize > 0) { mDefaultActivityButton.setVisibility(VISIBLE); ResolveInfo activity = mAdapter.getDefaultActivity(); PackageManager packageManager = mContext.getPackageManager(); mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager)); } else { mDefaultActivityButton.setVisibility(View.INVISIBLE); mExpandActivityOverflowButton.setEnabled(false); mDefaultActivityButton.setVisibility(View.GONE); } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); } } Loading Loading @@ -678,6 +697,10 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod return mDataModel.getActivityCount(); } public int getHistorySize() { return mDataModel.getHistorySize(); } public int getMaxActivityCount() { return mMaxActivityCount; } Loading core/res/res/drawable-hdpi/ab_share_pack_holo_dark.9.png 0 → 100644 +2.8 KiB Loading image diff... core/res/res/drawable-hdpi/ab_share_pack_holo_light.9.png 0 → 100644 +2.79 KiB Loading image diff... core/res/res/drawable-hdpi/ic_menu_share_holo_dark.png −679 B (467 B) Loading image diff... Loading
core/java/android/widget/ActivityChooserModel.java +11 −0 Original line number Diff line number Diff line Loading @@ -663,6 +663,17 @@ public class ActivityChooserModel extends DataSetObservable { } } /** * Gets the history size. * * @return The history size. */ public int getHistorySize() { synchronized (mInstanceLock) { return mHistoricalRecords.size(); } } @Override protected void finalize() throws Throwable { super.finalize(); Loading
core/java/android/widget/ActivityChooserView.java +41 −18 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.View.MeasureSpec; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; Loading Loading @@ -75,6 +76,11 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod */ private final LinearLayout mActivityChooserContent; /** * Stores the background drawable to allow hiding and latter showing. */ private final Drawable mActivityChooserContentBackground; /** * The expand activities action button; */ Loading Loading @@ -194,12 +200,15 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod Drawable expandActivityOverflowButtonDrawable = attributesArray.getDrawable( R.styleable.ActivityChooserView_expandActivityOverflowButtonDrawable); attributesArray.recycle(); LayoutInflater inflater = LayoutInflater.from(mContext); inflater.inflate(R.layout.activity_chooser_view, this, true); mCallbacks = new Callbacks(); mActivityChooserContent = (LinearLayout) findViewById(R.id.activity_chooser_view_content); mActivityChooserContentBackground = mActivityChooserContent.getBackground(); mDefaultActivityButton = (FrameLayout) findViewById(R.id.default_activity_button); mDefaultActivityButton.setOnClickListener(mCallbacks); Loading @@ -217,7 +226,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod @Override public void onChanged() { super.onChanged(); updateButtons(); updateAppearance(); } }); Loading Loading @@ -352,9 +361,16 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { mActivityChooserContent.measure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(mActivityChooserContent.getMeasuredWidth(), mActivityChooserContent.getMeasuredHeight()); View child = mActivityChooserContent; // If the default action is not visible we want to be as tall as the // ActionBar so if this widget is used in the latter it will look as // a normal action button. if (mDefaultActivityButton.getVisibility() != VISIBLE) { heightMeasureSpec = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY); } measureChild(child, widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(child.getMeasuredWidth(), child.getMeasuredHeight()); } @Override Loading @@ -367,11 +383,6 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod } } @Override protected void onDraw(Canvas canvas) { mActivityChooserContent.onDraw(canvas); } public ActivityChooserModel getDataModel() { return mAdapter.getDataModel(); } Loading Loading @@ -417,21 +428,29 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod /** * Updates the buttons state. */ private void updateButtons() { final int activityCount = mAdapter.getActivityCount(); if (activityCount > 0) { mDefaultActivityButton.setVisibility(VISIBLE); private void updateAppearance() { // Expand overflow button. if (mAdapter.getCount() > 0) { mExpandActivityOverflowButton.setEnabled(true); } else { mExpandActivityOverflowButton.setEnabled(false); } // Default activity button. final int activityCount = mAdapter.getActivityCount(); final int historySize = mAdapter.getHistorySize(); if (activityCount > 0 && historySize > 0) { mDefaultActivityButton.setVisibility(VISIBLE); ResolveInfo activity = mAdapter.getDefaultActivity(); PackageManager packageManager = mContext.getPackageManager(); mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager)); } else { mDefaultActivityButton.setVisibility(View.INVISIBLE); mExpandActivityOverflowButton.setEnabled(false); mDefaultActivityButton.setVisibility(View.GONE); } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); } } Loading Loading @@ -678,6 +697,10 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod return mDataModel.getActivityCount(); } public int getHistorySize() { return mDataModel.getHistorySize(); } public int getMaxActivityCount() { return mMaxActivityCount; } Loading