Loading packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java +65 −24 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.keyguard; import android.app.PendingIntent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.TransitionDrawable; import com.android.internal.policy.IKeyguardShowCallback; import com.android.internal.widget.LockPatternUtils; Loading Loading @@ -174,19 +176,7 @@ public class KeyguardViewManager { private final Drawable mBackgroundDrawable = new Drawable() { @Override public void draw(Canvas canvas) { if (mCustomBackground != null) { final Rect bounds = mCustomBackground.getBounds(); final int vWidth = getWidth(); final int vHeight = getHeight(); final int restore = canvas.save(); canvas.translate(-(bounds.width() - vWidth) / 2, -(bounds.height() - vHeight) / 2); mCustomBackground.draw(canvas); canvas.restoreToCount(restore); } else { canvas.drawColor(BACKGROUND_COLOR, PorterDuff.Mode.SRC); } drawToCanvas(canvas, mCustomBackground); } @Override Loading @@ -203,26 +193,77 @@ public class KeyguardViewManager { } }; private TransitionDrawable mTransitionBackground = null; public ViewManagerHost(Context context) { super(context); setBackground(mBackgroundDrawable); } public void drawToCanvas(Canvas canvas, Drawable drawable) { if (drawable != null) { final Rect bounds = drawable.getBounds(); final int vWidth = getWidth(); final int vHeight = getHeight(); final int restore = canvas.save(); canvas.translate(-(bounds.width() - vWidth) / 2, -(bounds.height() - vHeight) / 2); drawable.draw(canvas); canvas.restoreToCount(restore); } else { canvas.drawColor(BACKGROUND_COLOR, PorterDuff.Mode.SRC); } } public void setCustomBackground(Drawable d) { if (!ActivityManager.isHighEndGfx() || !mScreenOn) { mCustomBackground = d; if (d != null) { d.setColorFilter(BACKGROUND_COLOR, PorterDuff.Mode.SRC_OVER); } computeCustomBackgroundBounds(); computeCustomBackgroundBounds(mCustomBackground); setBackground(mBackgroundDrawable); } else { Drawable old = mCustomBackground; if (old == null && d == null) { return; } boolean newIsNull = false; if (old == null) { old = new ColorDrawable(BACKGROUND_COLOR); } if (d == null) { d = new ColorDrawable(BACKGROUND_COLOR); newIsNull = true; } else { d.setColorFilter(BACKGROUND_COLOR, PorterDuff.Mode.SRC_OVER); } computeCustomBackgroundBounds(d); Bitmap b = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); drawToCanvas(c, d); Drawable dd = new BitmapDrawable(mContext.getResources(), b); mTransitionBackground = new TransitionDrawable(new Drawable[] {old, dd}); mTransitionBackground.setCrossFadeEnabled(true); setBackground(mTransitionBackground); mTransitionBackground.startTransition(200); mCustomBackground = newIsNull ? null : dd; } invalidate(); } private void computeCustomBackgroundBounds() { if (mCustomBackground == null) return; // Nothing to do private void computeCustomBackgroundBounds(Drawable background) { if (background == null) return; // Nothing to do if (!isLaidOut()) return; // We'll do this later final int bgWidth = mCustomBackground.getIntrinsicWidth(); final int bgHeight = mCustomBackground.getIntrinsicHeight(); final int bgWidth = background.getIntrinsicWidth(); final int bgHeight = background.getIntrinsicHeight(); final int vWidth = getWidth(); final int vHeight = getHeight(); Loading @@ -230,16 +271,16 @@ public class KeyguardViewManager { final float vAspect = (float) vWidth / vHeight; if (bgAspect > vAspect) { mCustomBackground.setBounds(0, 0, (int) (vHeight * bgAspect), vHeight); background.setBounds(0, 0, (int) (vHeight * bgAspect), vHeight); } else { mCustomBackground.setBounds(0, 0, vWidth, (int) (vWidth / bgAspect)); background.setBounds(0, 0, vWidth, (int) (vWidth / bgAspect)); } } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); computeCustomBackgroundBounds(); computeCustomBackgroundBounds(mCustomBackground); } @Override Loading Loading
packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java +65 −24 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.keyguard; import android.app.PendingIntent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.TransitionDrawable; import com.android.internal.policy.IKeyguardShowCallback; import com.android.internal.widget.LockPatternUtils; Loading Loading @@ -174,19 +176,7 @@ public class KeyguardViewManager { private final Drawable mBackgroundDrawable = new Drawable() { @Override public void draw(Canvas canvas) { if (mCustomBackground != null) { final Rect bounds = mCustomBackground.getBounds(); final int vWidth = getWidth(); final int vHeight = getHeight(); final int restore = canvas.save(); canvas.translate(-(bounds.width() - vWidth) / 2, -(bounds.height() - vHeight) / 2); mCustomBackground.draw(canvas); canvas.restoreToCount(restore); } else { canvas.drawColor(BACKGROUND_COLOR, PorterDuff.Mode.SRC); } drawToCanvas(canvas, mCustomBackground); } @Override Loading @@ -203,26 +193,77 @@ public class KeyguardViewManager { } }; private TransitionDrawable mTransitionBackground = null; public ViewManagerHost(Context context) { super(context); setBackground(mBackgroundDrawable); } public void drawToCanvas(Canvas canvas, Drawable drawable) { if (drawable != null) { final Rect bounds = drawable.getBounds(); final int vWidth = getWidth(); final int vHeight = getHeight(); final int restore = canvas.save(); canvas.translate(-(bounds.width() - vWidth) / 2, -(bounds.height() - vHeight) / 2); drawable.draw(canvas); canvas.restoreToCount(restore); } else { canvas.drawColor(BACKGROUND_COLOR, PorterDuff.Mode.SRC); } } public void setCustomBackground(Drawable d) { if (!ActivityManager.isHighEndGfx() || !mScreenOn) { mCustomBackground = d; if (d != null) { d.setColorFilter(BACKGROUND_COLOR, PorterDuff.Mode.SRC_OVER); } computeCustomBackgroundBounds(); computeCustomBackgroundBounds(mCustomBackground); setBackground(mBackgroundDrawable); } else { Drawable old = mCustomBackground; if (old == null && d == null) { return; } boolean newIsNull = false; if (old == null) { old = new ColorDrawable(BACKGROUND_COLOR); } if (d == null) { d = new ColorDrawable(BACKGROUND_COLOR); newIsNull = true; } else { d.setColorFilter(BACKGROUND_COLOR, PorterDuff.Mode.SRC_OVER); } computeCustomBackgroundBounds(d); Bitmap b = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); drawToCanvas(c, d); Drawable dd = new BitmapDrawable(mContext.getResources(), b); mTransitionBackground = new TransitionDrawable(new Drawable[] {old, dd}); mTransitionBackground.setCrossFadeEnabled(true); setBackground(mTransitionBackground); mTransitionBackground.startTransition(200); mCustomBackground = newIsNull ? null : dd; } invalidate(); } private void computeCustomBackgroundBounds() { if (mCustomBackground == null) return; // Nothing to do private void computeCustomBackgroundBounds(Drawable background) { if (background == null) return; // Nothing to do if (!isLaidOut()) return; // We'll do this later final int bgWidth = mCustomBackground.getIntrinsicWidth(); final int bgHeight = mCustomBackground.getIntrinsicHeight(); final int bgWidth = background.getIntrinsicWidth(); final int bgHeight = background.getIntrinsicHeight(); final int vWidth = getWidth(); final int vHeight = getHeight(); Loading @@ -230,16 +271,16 @@ public class KeyguardViewManager { final float vAspect = (float) vWidth / vHeight; if (bgAspect > vAspect) { mCustomBackground.setBounds(0, 0, (int) (vHeight * bgAspect), vHeight); background.setBounds(0, 0, (int) (vHeight * bgAspect), vHeight); } else { mCustomBackground.setBounds(0, 0, vWidth, (int) (vWidth / bgAspect)); background.setBounds(0, 0, vWidth, (int) (vWidth / bgAspect)); } } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); computeCustomBackgroundBounds(); computeCustomBackgroundBounds(mCustomBackground); } @Override Loading