Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some changes I made while using your control #45

Open
GoogleCodeExporter opened this issue Nov 12, 2015 · 0 comments
Open

Some changes I made while using your control #45

GoogleCodeExporter opened this issue Nov 12, 2015 · 0 comments

Comments

@GoogleCodeExporter
Copy link

Hi! this is the list of changes I made to your code to adapt it for my needs, 
with comments, you might be insterested to see them:

Index: src/kankan/wheel/widget/WheelView.java
===================================================================
--- src/kankan/wheel/widget/WheelView.java  (revision 20)
+++ src/kankan/wheel/widget/WheelView.java  (working copy)
@@ -22,14 +22,15 @@
 import java.util.LinkedList;
 import java.util.List;

-import kankan.wheel.R;
 import kankan.wheel.widget.adapters.WheelViewAdapter;
 import android.content.Context;
 import android.database.DataSetObserver;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
 import android.graphics.drawable.GradientDrawable.Orientation;
+import android.graphics.drawable.LayerDrawable;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
@@ -45,7 +46,7 @@
 public class WheelView extends View {

    /** Top and bottom shadows colors */
-   private static final int[] SHADOWS_COLORS = new int[] { 0xFF111111,
+   private static final int[] SHADOWS_COLORS = new int[] { 0xEEEEEEEE,
            0x00AAAAAA, 0x00AAAAAA };

    /** Top and bottom items offset (to hide that) */
@@ -424,7 +425,10 @@
     */
    private void initResourcesIfNecessary() {
        if (centerDrawable == null) {
-           centerDrawable = 
getContext().getResources().getDrawable(R.drawable.wheel_val);
+           centerDrawable = new GradientDrawable(Orientation.BOTTOM_TOP, new 
int[]{Color.argb(0x70,0x22, 0x22, 0x22), Color.argb(0x70,0xEE, 0xEE, 0xEE)});
+           ((GradientDrawable)centerDrawable).setStroke(1, Color.argb(0x70, 0x33, 
0x33, 0x33));
+           ((GradientDrawable)centerDrawable).setGradientType(GradientDrawable.LINEAR_G
RADIENT);       
+           ((GradientDrawable)centerDrawable).setGradientRadius(90);
        }

        if (topShadow == null) {
@@ -435,7 +439,26 @@
            bottomShadow = new GradientDrawable(Orientation.BOTTOM_TOP, SHADOWS_COLORS);
        }

-       setBackgroundResource(R.drawable.wheel_bg);
+       Drawable[] layers = new Drawable[3];
+       
+       layers[0] = new GradientDrawable(Orientation.BOTTOM_TOP, new 
int[]{Color.argb(0xFF,0x33, 0x33, 0x33), Color.argb(0xFF,0xDD, 0xDD, 0xDD)});
+       ((GradientDrawable)layers[0]).setStroke(1, Color.argb(0xFF, 0x33, 0x33, 
0x33));
+        
((GradientDrawable)layers[0]).setGradientType(GradientDrawable.LINEAR_GRADIENT);
+        ((GradientDrawable)layers[0]).setGradientRadius(90);
+        
+        layers[1] = new GradientDrawable(Orientation.TOP_BOTTOM, new 
int[]{Color.argb(0xFF,0xAA, 0xAA, 0xAA), Color.argb(0xFF,0xFF, 0xFF, 0xFF)});
+        
((GradientDrawable)layers[1]).setGradientType(GradientDrawable.LINEAR_GRADIENT);
+        ((GradientDrawable)layers[1]).setGradientRadius(90);
+        layers[1].setBounds(getLeft() - 4, getTop() - 1, getRight() - 4, 
getBottom() - 1 + getHeight()/2 );
+        
+        layers[2] = new GradientDrawable(Orientation.BOTTOM_TOP, new 
int[]{Color.argb(0xFF,0xAA, 0xAA, 0xAA), Color.argb(0xFF,0xFF, 0xFF, 0xFF)});
+        
((GradientDrawable)layers[2]).setGradientType(GradientDrawable.LINEAR_GRADIENT);
+        ((GradientDrawable)layers[2]).setGradientRadius(90);
+        layers[2].setBounds(getLeft() - 4, getTop() - getHeight()/2 - 1, 
getRight() - 4, getBottom() - 1 );
+       
+       LayerDrawable ld = new LayerDrawable(layers);
+       
+       setBackgroundDrawable(ld);
    }

    /**
@@ -622,7 +648,7 @@
                         distance -= getItemHeight() / 2;
                    }
                    int items = distance / getItemHeight();
-                   if (items != 0 && isValidItemIndex(currentItem + items)) {
+                   if (isValidItemIndex(currentItem + items)) {
                        notifyClickListenersAboutClick(currentItem + items);
                    }
                }


In main class I changed the shadow color to white (absolutely optional), added 
programmatical generation of gradients instead of resource one - the case is, 
jar does not contain those resources so the project is unusable unless you do 
that directly importing the code. Click listeners will notify the selected item 
click as well - I needed universal behaviour, and you can check in the listener 
if it's the selected item and skip it, if you want



Index: src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java
===================================================================
--- src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java  (revision 20)
+++ src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java  (working 
copy)
@@ -177,7 +177,7 @@
      * @param index the item index
      * @return the text of specified items
      */
-    protected abstract CharSequence getItemText(int index);
+    public abstract CharSequence getItemText(int index);

     @Override
     public View getItem(int index, View convertView, ViewGroup parent) {
Index: src/kankan/wheel/widget/adapters/AdapterWheel.java
===================================================================
--- src/kankan/wheel/widget/adapters/AdapterWheel.java  (revision 20)
+++ src/kankan/wheel/widget/adapters/AdapterWheel.java  (working copy)
@@ -54,7 +54,7 @@
     }

     @Override
-    protected CharSequence getItemText(int index) {
+    public CharSequence getItemText(int index) {
         return adapter.getItem(index);
     }

The method getItemText has been made public, since some users might want to 
implement the same behaviour for different wheels and might need the contained 
strings for display in the list or wherever they want. This allows us to cast 
the similar wheel adapters to abstract and use the strings

Original issue reported on code.google.com by volkov.r...@gmail.com on 14 Dec 2012 at 12:22

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant