Tôi đang cố gắng thêm phản hồi chạm vào LinearLayout tương tự như phản hồi của Nút thông thường ở cấp API 21, giống như ví dụ this và cho đến nay không thành công.Hiệu ứng Ripple Android + Độ cao trên các lần xem không phải nút
tôi đã xác định đối tượng vẽ được gợn tiêu chuẩn như thế này:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="?android:colorAccent" />
</shape>
</item>
và sử dụng StateListAnimator mà Google cung cấp here:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="@dimen/touch_raise"
android:valueType="floatType" />
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"
android:valueType="floatType" />
</item>
Sau khi xác định làm phim hoạt hình và gợn drawable, tôi đã thêm chúng vào Li của tôi nearLayout như vậy:
<LinearLayout
android:id="@+id/linearLayout"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:background="@drawable/ripple"
android:stateListAnimator="@anim/touch_elevation">
Ý tưởng là để sử dụng LinearLayout này như một nút, vì nó là đơn giản hơn nhiều cho tôi để chèn nhiều loại hình văn bản và xử lý vị trí ImageView bên trong nó (như trái ngược với drawables nút).
Thêm hiệu ứng gợn hoặc hoạt ảnh riêng biệt hoạt động, miễn là nền của chế độ xem không có độ trong suốt theo câu hỏi this.
Tôi không chắc liệu đây có phải là vấn đề liên quan đến câu hỏi được đề cập ở trên hay không, nhưng nhìn thấy nút tiêu chuẩn quản lý để sử dụng cả phản hồi hoạt ảnh và độ cao, tôi thấy rằng có thể đạt được hiệu ứng này trên các chế độ xem khác.
Bất kỳ thông tin chi tiết nào về vấn đề này sẽ được đánh giá rất nhiều.
Nếu bạn đang mong đợi hiệu ứng gợn sóng được áp dụng khi người dùng nhấn vào 'LinearLayout', bạn cần sử dụng' StateListDrawable' thích hợp, không trực tiếp tham chiếu đến ''. –
CommonsWare
Vui lòng xây dựng – Rakatan
Nền hiện tại của bạn cho biết "hiển thị gợn ngay lập tức". Điều đó có vẻ giống như một sự lựa chọn tò mò. Nền của một 'Nút' là một' StateListDrawable', để sử dụng các hình ảnh khác nhau cho bình thường, được nhấn, bị vô hiệu hóa, tập trung, vv Bạn sẽ cần phải làm điều tương tự. – CommonsWare