Android一般问题

时间:2011-04-20 12:48:15

标签: android

我有一个小程序,我有2个图像,现在我正在为每个图像执行OnTouch事件,当单击顶部的图像设置为不可见时。这工作正常..但在主Activity中有这个变得混乱..

我创建了一个TestView,我想将主活动中的代码移动到testView,但我不知道在哪里放置OnTouch事件以及如何从那里做同样的事情?我不知道在哪里放置OnTouch事件以及如何从我的testView中绘制ImageViews ..当我在Main活动时,他们画得很好..但是现在..我不知道如何从“testView extends View”类中绘制它们。你能帮我组织一下吗?

public class TestView extends View{


    public TestView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
    public TestView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public TestView(Context context) {
        super(context);
                // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas); 


    } 

}

public class GameActivity extends Activity {    
/** Called when the activity is first created. */
public int ColorId;
public boolean isUserTurn = false;
public int globalIndex = 1;
@Override  
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myviewlay);

final ImageView image1= (ImageView)findViewById(R.id.ImageView03); 
image1.setOnTouchListener(new OnTouchListener()
    {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub

        try {
            Thread.sleep(200);
         ColorId = 1;
        int action = event.getAction(); 

        if(action == MotionEvent.ACTION_DOWN){             

            image1.setVisibility(View.INVISIBLE);    

            }
        else
        {

            image1.setVisibility(View.VISIBLE);     
        }
        //return super.onTouchEvent(event);   
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return true;
        } 


        }); 
final ImageView image2= (ImageView)findViewById(R.id.ImageView02); 
image2.setOnTouchListener(new OnTouchListener()
    {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub

        try {
            Thread.sleep(200);
             ColorId = 2;
        int action = event.getAction();         
        if(action == MotionEvent.ACTION_DOWN){             

            image2.setVisibility(View.INVISIBLE);         
            }
        else
        {            
            image2.setVisibility(View.VISIBLE);     
        }
        //return super.onTouchEvent(event);  
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
        return true;
        } 

        });

我只是想知道,如果我将它移动到测试视图,我该如何组织它以便它可以在那里工作。我是Android新手......

谢谢

1 个答案:

答案 0 :(得分:1)

对于onTouch活动,您只需在onTouchListener上实施TestView即可。如果两个ImageView都位于TestView内,则需要使用某种ViewGroup来进行自定义视图的布局。如果不是,您只需扩展ImageView而不是扩展View并将自定义TestView放在XML布局中,并在您的活动中调用setContentView(<your_layout>)

如果不够清楚,请说些什么:P

希望它有所帮助, JQCorreia