0

我有四个以数字 0-9 旋转的轮子:

在此处输入图像描述

我希望能够从四个不同的数组将单词输入到每个轮子中,这样每个轮子都会有自己特定的单词数组。

该代码发布在下面,如果有人可以查看并编辑代码以更正它,将会非常有帮助。

public class PasswActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.passw_layout);
        initWheel(R.id.passw_1);
        initWheel(R.id.passw_2);
        initWheel(R.id.passw_3);
        initWheel(R.id.passw_4);

        Button mix = (Button)findViewById(R.id.btn_mix);
        mix.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                mixWheel(R.id.passw_1);
                mixWheel(R.id.passw_2);
                mixWheel(R.id.passw_3);
                mixWheel(R.id.passw_4);
            }
        });
   }

   // Wheel scrolled flag
   private boolean wheelScrolled = false;

   // Wheel scrolled listener
   OnWheelScrollListener scrolledListener = new OnWheelScrollListener() {
        public void onScrollingStarted(WheelView wheel) {
            wheelScrolled = true;
        } 
        public void onScrollingFinished(WheelView wheel) {
            wheelScrolled = false;
        }
   };

   // Wheel changed listener
   private OnWheelChangedListener changedListener = new OnWheelChangedListener() {
         public void onChanged(WheelView wheel, int oldValue, int newValue) {
             if (!wheelScrolled) {

            }
         }
   };


    /**
      * Initializes wheel
      * @param id the wheel widget Id
     */
    private void initWheel(int id) {
          WheelView wheel = getWheel(id);
          wheel.setViewAdapter(new NumericWheelAdapter(this, 0, 9));
          wheel.setCurrentItem((int)(Math.random() * 10));

          wheel.addChangingListener(changedListener);
          wheel.addScrollingListener(scrolledListener);
          wheel.setCyclic(true);
          wheel.setInterpolator(new AnticipateOvershootInterpolator());
    }

    /**
     * Returns wheel by Id
     * @param id the wheel Id
     * @return the wheel with passed Id
    */
    private WheelView getWheel(int id) {
         return (WheelView) findViewById(id);
    }

    /**
    * Tests entered PIN
      * @param v1
      * @param v2
      * @param v3
      * @param v4
      * @return true 
     */
     private boolean testPin(int v1, int v2, int v3, int v4) {
       return testWheelValue(R.id.passw_1, v1) && testWheelValue(R.id.passw_2, v2) &&
        testWheelValue(R.id.passw_3, v3) && testWheelValue(R.id.passw_4, v4);
     }

    /**
     * Tests wheel value
     * @param id the wheel Id
     * @param value the value to test
     * @return true if wheel value is equal to passed value
    */
    private boolean testWheelValue(int id, int value) {
            return getWheel(id).getCurrentItem() == value;
    }

     /**
     * Mixes wheel
     * @param id the wheel id
     */
     private void mixWheel(int id) {
            WheelView wheel = getWheel(id);
            wheel.scroll(-25 + (int)(Math.random() * 50), 2000);
     }
}
4

2 回答 2

1

在来自http://code.google.com/p/android-wheel/的Android Picker 小部件中,我使用http://android-wheel.googlecode.com/svn/trunk/分叉了一个项目

然后我在我的 Eclipse IDE 中从源代码导入了一个新的 Android 项目 - WheelDemo 。之后我改变了:在WheelDemo.java中:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    //Since another activity is being called in this way,
    //I am sending a list with every intent, but this can be changed

    Map map = (Map) l.getItemAtPosition(position);

    ArrayList<String> list = new ArrayList<String>();
    list.add("One");
    list.add("Two");

    Intent intent = (Intent) map.get("intent");
    intent.putStringArrayListExtra("list", list);
    startActivity(intent);
}

CitiesActivity.java 中

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.cities_layout);
        String[] arrayString = null;

        ArrayList<String> list = new ArrayList<String>();
        list = getIntent().getExtras().getStringArrayList("list");

        if (list != null) {
            arrayString = new String[list.size()];
            if (!list.isEmpty()) {
                for (int i = 0; i < list.size(); i++)
                    arrayString[i] = list.get(i);
            } else
                System.out.println("list is empty");
        } else
            System.out.println("list is null");

        final WheelView country = (WheelView) findViewById(R.id.country);
        country.setVisibleItems(3);
        country.setViewAdapter(new CountryAdapter(this));

        final String cities[][] = new String[][] {
                new String[] { "New York", "Washington", "Chicago", "Atlanta",
                        "Orlando" },
                new String[] { "Ottawa", "Vancouver", "Toronto", "Windsor",
                        "Montreal" },
                new String[] { "Kiev", "Dnipro", "Lviv", "Kharkiv" },
                arrayString, };

.....

然后我得到这样一张照片:

车轮小部件 Android

PS我用的是WheelDemo源码,不是Wheel one

于 2011-11-18T17:50:27.573 回答
0

在源代码(kankan.wheel.widget)中,您还有 ArrayWheelAdapter 类,使用它代替 NumericWheelAdapter 类

于 2011-11-18T11:10:35.807 回答