2011-05-10 19 views
0

我的問題是如何在Android上製作一組可點擊的圖片。如何製作一組可點擊的圖形對象?

我可以通過使用ShapeDrawable製作一個可點擊的球體,但是我想一次製作多個,並且仍然能夠獲得所有這些點擊。

此外我想按照自己的意願將它們放置在屏幕上,而不是像佈局一樣自動定位。

球的數量可以改變,因爲地方。

這是代碼,我用它來創建一個:

Main.java

package com.teste; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.LinearLayout; 
import android.widget.Toast; 

public class Main extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LinearLayout layout = new LinearLayout(this); 

     CustomDrawableView mCustomDrawableView = new CustomDrawableView(this, 100, 100, 50, 50, 0xff74AC23); 
     CustomDrawableView mCustomDrawableView2 = new CustomDrawableView(this, 10, 10, 50, 50, 0xffffffff); 

     mCustomDrawableView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getBaseContext(), "Clicked green ball", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     mCustomDrawableView2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getBaseContext(), "Clicked white ball", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     layout.addView(mCustomDrawableView); 
     layout.addView(mCustomDrawableView2); 
     setContentView(layout); 

    } 
} 

CustomDrawableView.java

package com.teste; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.drawable.ShapeDrawable; 
import android.graphics.drawable.shapes.OvalShape; 
import android.view.View; 
import android.view.ViewGroup.LayoutParams; 

public class CustomDrawableView extends View { 
    private ShapeDrawable mDrawable; 

    public CustomDrawableView(Context context, int i, int j, int k, int l, int m) { 
     super(context); 

     LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
     super.setLayoutParams(params); 

     mDrawable = new ShapeDrawable(new OvalShape()); 
     mDrawable.getPaint().setColor(m); 
     mDrawable.setBounds(i, j, i + k, j + l); 
    } 

    protected void onDraw(Canvas canvas) { 
     mDrawable.draw(canvas); 
    } 
} 

希望你能幫助:)

回答

0

它應該就像做你的分類一樣簡單

CustomDrawableView extends View implements OnClickListener { 
    // all your code here 

    public void onClick(View v) { 
      // your callback function here 
    } 
} 

看看我前段時間在這個答案中寫的一個例子:Android onClick method doesn't work on a custom view