diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2014-08-22 16:09:37 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2014-08-25 11:38:02 -0700 |
commit | 424418bb50ccf5d9270650b70cc51f423da51a65 (patch) | |
tree | 23c7b40d02e7b4dfda6395b7b30ea6305a27dd1a /src/com/android/launcher3/ClearCircleLayout.java | |
parent | dec12adb6dba114ad2feedce3a9f3ce0c178fc04 (diff) | |
download | android_packages_apps_Trebuchet-424418bb50ccf5d9270650b70cc51f423da51a65.tar.gz android_packages_apps_Trebuchet-424418bb50ccf5d9270650b70cc51f423da51a65.tar.bz2 android_packages_apps_Trebuchet-424418bb50ccf5d9270650b70cc51f423da51a65.zip |
Updating clings, removing ununsed clings
issue: 16127412
Change-Id: I1d18515765100ff10d33439b3ac39ebfc5da35c7
Diffstat (limited to 'src/com/android/launcher3/ClearCircleLayout.java')
-rw-r--r-- | src/com/android/launcher3/ClearCircleLayout.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/com/android/launcher3/ClearCircleLayout.java b/src/com/android/launcher3/ClearCircleLayout.java new file mode 100644 index 000000000..e48c84eef --- /dev/null +++ b/src/com/android/launcher3/ClearCircleLayout.java @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Point; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.view.View; + +public class ClearCircleLayout extends View { + + private static final String HOLE_LOCATION_PAGE_INDICATOR = "page_indicator"; + private static final String HOLE_LOCATION_CENTER_SCREEN = "center_screen"; + + private static final int BACKGROUND_COLOR = 0x80000000; + private static float MIGRATION_WORKSPACE_INNER_CIRCLE_RADIUS_DPS = 42; + private static float MIGRATION_WORKSPACE_OUTER_CIRCLE_RADIUS_DPS = 46; + + private final String mHoleLocation; + private final Paint mErasePaint; + private final Paint mBorderPaint; + + private Launcher mLauncher; + private Point mHoleCenter; + private DisplayMetrics mMetrics; + + public ClearCircleLayout(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ClearCircleLayout); + mHoleLocation = a.getString(R.styleable.ClearCircleLayout_holeLocation); + a.recycle(); + + mErasePaint = new Paint(); + mErasePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); + mErasePaint.setColor(0xFFFFFF); + mErasePaint.setAlpha(0); + mErasePaint.setAntiAlias(true); + + mBorderPaint = new Paint(); + mBorderPaint.setColor(0xFFFFFFFF); + mBorderPaint.setAntiAlias(true); + } + + void initHole(Launcher launcher) { + mLauncher = launcher; + mMetrics = new DisplayMetrics(); + launcher.getWindowManager().getDefaultDisplay().getMetrics(mMetrics); + + if (mHoleLocation.endsWith(HOLE_LOCATION_PAGE_INDICATOR)) { + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + + Rect indicator = grid.getWorkspacePageIndicatorBounds(new Rect()); + mHoleCenter = new Point(indicator.centerX(), indicator.centerY()); + } else if (mHoleLocation.endsWith(HOLE_LOCATION_CENTER_SCREEN)) { + mHoleCenter = new Point(mMetrics.widthPixels / 2, mMetrics.heightPixels / 2); + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + if (mHoleCenter == null) { + canvas.drawColor(BACKGROUND_COLOR); + } else { + drawHole(canvas); + } + + super.dispatchDraw(canvas); + } + + private void drawHole(Canvas canvas) { + // Initialize the draw buffer (to allow punching through) + Bitmap eraseBg = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), + Bitmap.Config.ARGB_8888); + Canvas eraseCanvas = new Canvas(eraseBg); + eraseCanvas.drawColor(BACKGROUND_COLOR); + + Rect insets = mLauncher.getDragLayer().getInsets(); + float x = mHoleCenter.x - insets.left; + float y = mHoleCenter.y - insets.top; + // Draw the outer circle + eraseCanvas.drawCircle(x, y, + DynamicGrid.pxFromDp(MIGRATION_WORKSPACE_OUTER_CIRCLE_RADIUS_DPS, mMetrics), + mBorderPaint); + + // Draw the inner circle + eraseCanvas.drawCircle(x, y, + DynamicGrid.pxFromDp(MIGRATION_WORKSPACE_INNER_CIRCLE_RADIUS_DPS, mMetrics), + mErasePaint); + + canvas.drawBitmap(eraseBg, 0, 0, null); + eraseCanvas.setBitmap(null); + eraseBg.recycle(); + } +} |