2012-05-03 38 views
7

Có cách nào để tạo hoạt ảnh cho một nút trong Android để khi bạn nhấp vào nó, nó sẽ thay đổi nền của nút thành hình ảnh được nhấn không?Nút bấm vào thay đổi trạng thái trực quan của nhấp chuột

Tôi chỉ sử dụng thuộc tính nền để hiển thị hình ảnh trên nút biểu mẫu.

+3

Hoạt ảnh theo nghĩa này là gây hiểu nhầm vì không có "hoạt hình" thực, mà chỉ phản ánh thay đổi trạng thái. (Tôi đang nói điều này bởi vì tôi đang cố gắng để thực sự animate một nút và thread này không giúp gì cả!) – styler1972

Trả lời

20

Sử dụng XML này: lưu nó vào thư mục có thể kéo và đặt làm nền có thể vẽ.

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="false" android:drawable="@drawable/category_listing_bg_img" /> 
<item android:state_pressed="true" android:drawable="@drawable/category_listing_bg_img_pressed" /> 
</selector> 
1

Có. Triển khai onTouchListener. sử dụng biến MotionEvent (cho phép nói sự kiện) trong phương pháp onTouch viết này:

if (event.getAction() == MotionEvent.ACTION_DOWN){ 
    /*Code*/ 
} 
if (event.getAction() == MotionEvent.ACTION_UP){ 
    /*Code*/ 
} 
+0

bạn đã đọc câu hỏi?! – thepoosh

+0

Phương pháp trên được đăng bởi KKD cũng có thể được sử dụng thepoosh và hoạt động tốt .. –

1

những gì bạn cần làm là tạo ra một selector (những gì Krishnakant Dalal đang nói về). nó Handels cách các yếu tố giao diện người dùng trông giống như tại mỗi tiểu bang duy nhất nó có thể được (máy ép, tàn tật, bình thường, vv)

để biết thêm về selectors đọc ở đây: http://android-journey.blogspot.com/2009/12/android-selectors.html

5

thêm một file xml trên res của bạn/drawable tên thư mục nó button_selector.xml cũng đặt hai đối tượng có thể vẽ cho trạng thái được nhấn và onother cho trạng thái chưa được nén hoặc bình thường. Cuối cùng, thêm hai nút chọn tệp xml của bạn và mọi thứ sẽ hoạt động !! đừng quên đặt @ drawable/bytton_selector.xml làm nền của nút trên tệp main.xml của bạn.

+0

nó hoạt động, nhưng tôi muốn biết tại sao android: state_pressed = "false" không cần thiết? Tôi đã thử nghiệm mà không có nó, vẫn làm việc .. Có thể thực hiện tốt hơn thay vì kiểm tra hai tiểu bang? – lynndragon

Các vấn đề liên quan