Menu

3/27/19

Phần 2-FindViewById và sự kiện onTouchEvent


Trong android, muốn sử dụng các view đã thiết kế trong layout(XML) thì ta phải ánh xạ chúng trong source java.

Đầu tiên, ta hãy khai báo các biến cần ánh xạ, cụ thể là các đối tượng

-scorelabel: hiển thị điểm cho game.
-startlabel: yêu cầu người chơi nhấn vào screen để bắt đầu.
-box: là box catcher
.-orange: bóng màu cam
-pink: bóng màu hồng.
-black: bóng màu đen.




Để khởi tạo vị trí ban đầu cho box ta cần biến boxY. theo trục tọa độ Y.




























Tiếp theo, ta tiến hành ánh xạ đối tượng trong hàm Oncreate sẵn có.


protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        scoreLabel=(TextView)findViewById(R.id.scoreLabel);
        startLabel=(TextView)findViewById(R.id.startLabel);
        box=(ImageView)findViewById(R.id.box);
        orange=(ImageView)findViewById(R.id.orange);
        pink=(ImageView)findViewById(R.id.pink);
        black=(ImageView)findViewById(R.id.black);

Ta thiết đặt tọa độ âm ban đầu cho các đối tượng ==> nằm ngoài màn hình screen nhé.


























 Từ sự tính toán đó, ta có:    
    
 orange.setX(-80);       
 orange.setY(-80);       
 pink.setX(-80);       
 pink.setY(-80);       
 black.setX(-130);      
 black.setY(-130);


Tiếp theo, hãy ẩn text Tab to start, và thiết đặt tọa độ Y ban đầu cho Box.   

  startLabel.setVisibility(View.INVISIBLE);  
  boxY=500;

Trong class cha ta xây dựng hàm onTouchEvent để bắt sự kiện click vào màn hình screen, ta cần override lên hàm gốc.(thêm từ khóa @Override trước hàm)

public boolean OnTouchEvent(MotionEvent event) khi hàm báo đỏ chỗ 


MotionEvent ta chỉ việc click vào nó, sau đó nhấn tổ hợp phím ALT+Enter thì IDE sẽ tự insert thêm thư viện cho ta:
import android.view.MotionEvent;


Kết quả xây dựng hàm onTouchEvent


  @Override
    public boolean onTouchEvent(MotionEvent e)
  {
        if(e.getAction()==MotionEvent.ACTION_DOWN){
            if (e.getAction() == MotionEvent.ACTION_DOWN)
            {
                boxY -= 20;
            }
            box.setY(boxY);


        }
      return true;
  }


Kết quả demo ứng dụng phần  2.





No comments:

Post a Comment