aboutsummaryrefslogtreecommitdiff
path: root/setupwizardlib/src/main/java/com/android/setupwizardlib/util/DrawableLayoutDirectionHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'setupwizardlib/src/main/java/com/android/setupwizardlib/util/DrawableLayoutDirectionHelper.java')
-rw-r--r--setupwizardlib/src/main/java/com/android/setupwizardlib/util/DrawableLayoutDirectionHelper.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/setupwizardlib/src/main/java/com/android/setupwizardlib/util/DrawableLayoutDirectionHelper.java b/setupwizardlib/src/main/java/com/android/setupwizardlib/util/DrawableLayoutDirectionHelper.java
new file mode 100644
index 0000000..bf4c0c2
--- /dev/null
+++ b/setupwizardlib/src/main/java/com/android/setupwizardlib/util/DrawableLayoutDirectionHelper.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2015 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.setupwizardlib.util;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.InsetDrawable;
+import android.os.Build;
+import android.view.View;
+
+/**
+ * Provides convenience methods to handle drawable layout directions in different SDK versions.
+ */
+public class DrawableLayoutDirectionHelper {
+
+ /**
+ * Creates an {@link android.graphics.drawable.InsetDrawable} according to the layout direction
+ * of {@code view}.
+ */
+ public static InsetDrawable createRelativeInsetDrawable(Drawable drawable,
+ int insetStart, int insetTop, int insetEnd, int insetBottom, View view) {
+ boolean isRtl = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1
+ && view.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+ return createRelativeInsetDrawable(drawable, insetStart, insetTop, insetEnd, insetBottom,
+ isRtl);
+ }
+
+ /**
+ * Creates an {@link android.graphics.drawable.InsetDrawable} according to the layout direction
+ * of {@code context}.
+ */
+ public static InsetDrawable createRelativeInsetDrawable(Drawable drawable,
+ int insetStart, int insetTop, int insetEnd, int insetBottom, Context context) {
+ boolean isRtl = false;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ final int layoutDirection =
+ context.getResources().getConfiguration().getLayoutDirection();
+ isRtl = layoutDirection == View.LAYOUT_DIRECTION_RTL;
+ }
+ return createRelativeInsetDrawable(drawable, insetStart, insetTop, insetEnd, insetBottom,
+ isRtl);
+ }
+
+ /**
+ * Creates an {@link android.graphics.drawable.InsetDrawable} according to
+ * {@code layoutDirection}.
+ */
+ public static InsetDrawable createRelativeInsetDrawable(Drawable drawable,
+ int insetStart, int insetTop, int insetEnd, int insetBottom, int layoutDirection) {
+ //noinspection AndroidLintInlinedApi
+ return createRelativeInsetDrawable(drawable, insetStart, insetTop, insetEnd, insetBottom,
+ layoutDirection == View.LAYOUT_DIRECTION_RTL);
+ }
+
+ private static InsetDrawable createRelativeInsetDrawable(Drawable drawable,
+ int insetStart, int insetTop, int insetEnd, int insetBottom, boolean isRtl) {
+ if (isRtl) {
+ return new InsetDrawable(drawable, insetEnd, insetTop, insetStart, insetBottom);
+ } else {
+ return new InsetDrawable(drawable, insetStart, insetTop, insetEnd, insetBottom);
+ }
+ }
+}