0

0 ~ 9 の数字で回転する 4 つの車輪があります。

ここに画像の説明を入力

4 つの異なる配列から各ホイールに単語を入力できるようにして、各ホイールが独自の特定の単語配列を持つようにしたいと考えています。

コードは以下に掲載されており、誰かがコードを見て編集して修正できると非常に役立ちます。

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 私はWheel oneではなく、 WheelDemoソースコードを使用しました

于 2011-11-18T17:50:27.573 に答える
0

ソース (kankan.wheel.widget) 内には ArrayWheelAdapter クラスもあります。代わりに NumericWheelAdapter calass を使用してください。

于 2011-11-18T11:10:35.807 に答える