滚轮菜单栏如何给图标单击动作

时间:2014-03-16 10:38:06

标签: android android-wheel

在我问这个问题之前。他们说添加方法。我添加但是如何给出click事件icon0。对我来说仍然是个问题..

first question

并且这些图标不在xml中。它们位于drawable文件夹中。 这是给我们使用它的方法

这是我的尝试

package com.myproject.gama;

import java.util.Arrays;

import com.digitalaria.gama.wheel.Wheel;
import com.digitalaria.gama.wheel.WheelAdapter;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
import android.view.View.*;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageButton;
import android.widget.ImageView;

import android.util.Log;

public class SampleWheelActivity extends Activity {

    private static final String TAG = SampleWheelActivity.class.getSimpleName();

    private Wheel wheel;
    public WheelAdapter<Adapter> adapter;
    private Resources res; 
    public int[] icons = { 
         R.drawable.icon1, R.drawable.icon0 , R.drawable.icon2};
    ImageView t;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        init();
      //first example:I try onitemclickListenner but I could not work again click event on icon1

       /*   setListAdapter(new ArrayAdapter(this, R.layout.main ,icons[1] ));

       ListView listView = getListView();
       listView.setTextFilterEnabled(true);

       listView.setOnItemClickListener(new OnItemClickListener() {
       public void onItemClick(AdapterView parent, View view, int position, long id) {               
       Toast.makeText(getApplicationContext(),"hahhaa",            Toast.LENGTH_SHORT).show();               
    }
});
*/
    }

    private void init() {
        res = getApplicationContext().getResources();
        wheel = (Wheel) findViewById(R.id.wheel);       
        wheel.setItems(getDrawableFromData(icons));
        wheel.setWheelDiameter(400);
         //I try this new
              wheel.setOnItemClickListener(new WheelAdapter.OnItemClickListener(){

        @Override
        public void onItemClick(WheelAdapter<?> parent, View view,
                int position, long id) {
         //how can I reach icon1 ?
             //I try it according to Ȃŵåiṩ ĸîŋg answer but still I can not reach icon1
         String selected;

             selected = parent.getItemAtPosition(icons.length + position).toString();
                if( selected.equals("icon0") ){
                      Toast.makeText(getApplicationContext(), ""+"icon0", Toast.LENGTH_SHORT).show();

                }
                else if( selected.equals("icon1")){
                     Toast.makeText(getApplicationContext(), ""+"icon1", Toast.LENGTH_SHORT).show();

                }
                else if(  selected.equals("icon2")){
        Toast.makeText(getApplicationContext(), ""+"icon2", Toast.LENGTH_SHORT).show();

                }


        }});



    }



    private Drawable[] getDrawableFromData(int[] data) {
        Drawable[] ret = new Drawable[data.length];
        for (int i = 0; i < data.length; i++) {
            ret[i] = res.getDrawable(data[i]);
        }
        return ret;
    }

//I try it but how can I give clickevent icon1.. when click icon1 it should go other page. 

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    ImageView iv = new ImageView(this);
    iv.setImageResource(R.drawable.icon1);

            //how can I do when I click this icon1 , it is go other page ???
            // how can do give click action
            // how should I fill this method



}

}

这是我的xml文件,xml上没有id图标。他们在drawable文件夹..

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@drawable/cell_bg"
    >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Hello, GAMA!" />

    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="500dp"
        android:orientation="vertical" 
        android:background="@drawable/belirtec9_2bg"
        android:paddingTop="10px"
    >

    <com.digitalaria.gama.wheel.Wheel
        android:id="@+id/wheel"
        android:paddingTop="10px" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>

    </LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:3)

试试这个:

wheel.setOnItemClickListener(new WheelAdapter.OnItemClickListener() {
    @Override
    public void onItemClick(WheelAdapter<?> parent, View view, int position, long id) {
        // Here I am using other activities to be opened on item press,
        // you can use any other action which you like.
        if (position == 0) {
            // First icon is pressed
            Intent intent = new Intent(context, MyNewClass.class);
            startActivity(intent);
        } else if (position == 1) {
            // Second icon is pressed
            Intent intent = new Intent(context, MySecondClass.class);
            startActivity(intent);
        }
    }
});

答案 1 :(得分:1)

此代码仅在项目上添加圈子:

    wheel.setOnItemClickListener(new WheelAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(WheelAdapter<?> parent, View view, int position, long id) {
            ImageView v = (ImageView) parent.getItemAtPosition(position);
            Drawable pd = (Drawable) v.getDrawable();
            Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE);
            //TODO: Set Color and width of circle
            paint.setColor(Color.BLUE);
            paint.setStrokeWidth(4);

            Bitmap mutableBitmap = Bitmap.createBitmap(((BitmapDrawable)pd).getBitmap()).copy(Bitmap.Config.ARGB_8888, true);
            Canvas canvas = new Canvas(mutableBitmap);
            canvas.drawCircle(((BitmapDrawable)pd).getBitmap().getWidth()/2, ((BitmapDrawable)pd).getBitmap().getHeight()/2, 30, paint);
            v.setImageBitmap(mutableBitmap);
        }
    });