diff options
author | Svetoslav <svetoslavganov@google.com> | 2013-10-10 18:44:22 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-10 18:44:22 -0700 |
commit | 5b8f01b62a09b001da4959d367fa99e46143791b (patch) | |
tree | bfd6fe5ec0faa4c44bb8bff9669d1b548c63f95f /packages/PrintSpooler | |
parent | 0faf411fb494d1d7b1fbfdb0c9b45dc83a2b262c (diff) | |
parent | 466c046f204e98b44506dfb1718f0b56094486f7 (diff) | |
download | frameworks_base-5b8f01b62a09b001da4959d367fa99e46143791b.zip frameworks_base-5b8f01b62a09b001da4959d367fa99e46143791b.tar.gz frameworks_base-5b8f01b62a09b001da4959d367fa99e46143791b.tar.bz2 |
am 466c046f: Merge "Fixing jank when transition from print dialog to generating one." into klp-dev
* commit '466c046f204e98b44506dfb1718f0b56094486f7':
Fixing jank when transition from print dialog to generating one.
Diffstat (limited to 'packages/PrintSpooler')
3 files changed, 52 insertions, 14 deletions
diff --git a/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml b/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml index 98b5cfe..d503216 100644 --- a/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml +++ b/packages/PrintSpooler/res/layout/print_job_config_activity_container.xml @@ -15,9 +15,12 @@ --> <com.android.printspooler.PrintDialogFrame xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/content_container" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:background="@color/container_background"> + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + <FrameLayout + android:id="@+id/content_container" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="@color/container_background"> + </FrameLayout> </com.android.printspooler.PrintDialogFrame> diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintDialogFrame.java b/packages/PrintSpooler/src/com/android/printspooler/PrintDialogFrame.java index 6dd8aa0..c1c4d21 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/PrintDialogFrame.java +++ b/packages/PrintSpooler/src/com/android/printspooler/PrintDialogFrame.java @@ -24,6 +24,8 @@ public class PrintDialogFrame extends FrameLayout { public final int mMaxWidth; + public int mHeight; + public PrintDialogFrame(Context context, AttributeSet attrs) { super(context, attrs); mMaxWidth = context.getResources().getDimensionPixelSize( @@ -32,13 +34,36 @@ public class PrintDialogFrame extends FrameLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + int measuredWidth = getMeasuredWidth(); final int widthMode = MeasureSpec.getMode(widthMeasureSpec); - if (widthMode == MeasureSpec.AT_MOST) { - final int receivedWidth = MeasureSpec.getSize(widthMeasureSpec); - final int computedWidth = Math.min(mMaxWidth, receivedWidth); - widthMeasureSpec = MeasureSpec.makeMeasureSpec(computedWidth, - MeasureSpec.EXACTLY); + switch (widthMode) { + case MeasureSpec.UNSPECIFIED: { + measuredWidth = mMaxWidth; + } break; + + case MeasureSpec.AT_MOST: { + final int receivedWidth = MeasureSpec.getSize(widthMeasureSpec); + measuredWidth = Math.min(mMaxWidth, receivedWidth); + } break; } - super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + mHeight = Math.max(mHeight, getMeasuredHeight()); + + int measuredHeight = getMeasuredHeight(); + final int heightMode = MeasureSpec.getMode(heightMeasureSpec); + switch (heightMode) { + case MeasureSpec.UNSPECIFIED: { + measuredHeight = mHeight; + } break; + + case MeasureSpec.AT_MOST: { + final int receivedHeight = MeasureSpec.getSize(heightMeasureSpec); + measuredHeight = Math.min(mHeight, receivedHeight); + } break; + } + + setMeasuredDimension(measuredWidth, measuredHeight); } } diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java index d6ebc2d..2922dd1 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java @@ -59,12 +59,14 @@ import android.text.TextWatcher; import android.util.ArrayMap; import android.util.AttributeSet; import android.util.Log; +import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.MeasureSpec; import android.view.View.OnAttachStateChangeListener; import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewPropertyAnimator; @@ -75,6 +77,7 @@ import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; @@ -1409,7 +1412,9 @@ public class PrintJobConfigActivity extends Activity { postSwitchCallback.run(); } } - }); + }, + new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER)); } break; } } break; @@ -1426,7 +1431,9 @@ public class PrintJobConfigActivity extends Activity { postSwitchCallback.run(); } } - }); + }, + new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER)); } break; } } break; @@ -1474,7 +1481,8 @@ public class PrintJobConfigActivity extends Activity { getLayoutInflater().inflate(showLayoutId, contentContainer, true); } - private void animateUiSwitch(int showLayoutId, final Runnable postAnimateCommand) { + private void animateUiSwitch(int showLayoutId, final Runnable postAnimateCommand, + final LayoutParams containerParams) { // Find everything we will shuffle around. final ViewGroup contentContainer = (ViewGroup) findViewById(R.id.content_container); final View hidingView = contentContainer.getChildAt(0); @@ -1511,6 +1519,8 @@ public class PrintJobConfigActivity extends Activity { contentContainer.setScaleY(1.0f); contentContainer.addView(showingView); + contentContainer.setLayoutParams(containerParams); + // Third animation - show the new content. AutoCancellingAnimator.animate(showingView).withLayer().alpha(1.0f) .withEndAction(new Runnable() { |