From 62858aa5d2beccd8c5a0668b9c3e714d96f22792 Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 13 Jul 2014 11:15:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9C=86=E8=A7=92=E7=9F=A9?= =?UTF-8?q?=E5=BD=A2=E8=83=8C=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/hippo/ehviewer/util/Theme.java | 38 +++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/com/hippo/ehviewer/util/Theme.java b/src/com/hippo/ehviewer/util/Theme.java index cd9a3faad..e2acf44a2 100644 --- a/src/com/hippo/ehviewer/util/Theme.java +++ b/src/com/hippo/ehviewer/util/Theme.java @@ -19,18 +19,18 @@ package com.hippo.ehviewer.util; import java.util.Random; import android.content.Context; -import android.content.res.ColorStateList; import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; public class Theme { - + private static final Random random = new Random(System.currentTimeMillis()); public static final int GREY_COLOR = 0xffaaaaaa; public static final ColorDrawable GREY_DRAWABLE = new ColorDrawable(0xffaaaaaa); - + /** * Ignore alpha * @param color @@ -44,7 +44,7 @@ public class Theme { else return false; } - + /** * Get random color, alpha is 0xff * @return @@ -52,7 +52,7 @@ public class Theme { public static int getRandomColor() { return random.nextInt() | 0xff000000; } - + /** * Get random deep color, alpha is 0xff * @return @@ -62,7 +62,7 @@ public class Theme { while(!isDeepColor(deepColor = getRandomColor())); return deepColor; } - + /** * get darker color of target color, alpha not change * @param color @@ -74,11 +74,35 @@ public class Theme { | (((color & 0xff) >> 1) & 0xff) | (color & 0xff000000); } - + public static StateListDrawable getClickDrawable(Context context, int color) { StateListDrawable sld = new StateListDrawable(); ColorDrawable normal = new ColorDrawable(color); ColorDrawable dark = new ColorDrawable(getDarkerColor(color)); + + sld.addState(new int[]{-android.R.attr.state_enabled}, GREY_DRAWABLE); + sld.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_selected}, dark); + sld.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_focused}, dark); + sld.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}, dark); + sld.addState(new int[]{}, normal); + return sld; + } + + public static StateListDrawable getRadiiClickDrawable(Context context, int color) { + int corner = Ui.dp2pix(2); + float[] cornerRadii = new float[]{ + corner, corner, corner, corner, corner, corner, corner, corner}; + + StateListDrawable sld = new StateListDrawable(); + GradientDrawable normal = new GradientDrawable(); + normal.setShape(GradientDrawable.RECTANGLE); + normal.setCornerRadii(cornerRadii); + normal.setColor(color); + GradientDrawable dark = new GradientDrawable(); + dark.setShape(GradientDrawable.RECTANGLE); + dark.setCornerRadii(cornerRadii); + dark.setColor(getDarkerColor(color)); + sld.addState(new int[]{-android.R.attr.state_enabled}, GREY_DRAWABLE); sld.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_selected}, dark); sld.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_focused}, dark);