Android Studioでテキストビューとイメージビューに波及効果を設定したい。どうすればできますか?
Android Studioでテキストビューとイメージビューに波及効果を設定したい。どうすればできますか?
回答:
参照:http : //developer.android.com/training/material/animations.html、
http://wiki.workassis.com/category/android/android-xml/
<TextView
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
android:background="?android:attr/selectableItemBackground"
Borderless
youtube.com/watch?v=wOjA8tS5sbcを使用
リップルをTextView / ImageViewのサイズに制限したい場合は、以下を使用します。
<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>
(見た目が良いと思います)
selectableItemBackground
vsの使用に違いはありますかselectableItemBackgroundBorderless
波及効果については以下の回答を参照してください。
Textviewまたはviewのリップル:
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
ボタンまたはImageviewの波紋:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
selectableItemBackgroundBorderless
API 21+であることに注意してください。以下ではselectableItemBackground
、互換性の問題を回避することを選択できます
あなたはandroid-ripple-backgroundを使うことができます
開始効果
final RippleBackground rippleBackground=(RippleBackground)findViewById(R.id.content);
ImageView imageView=(ImageView)findViewById(R.id.centerImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rippleBackground.startRippleAnimation();
}
});
アニメーションを停止:
rippleBackground.stopRippleAnimation();
<TextView
android:id="@+id/txt_banner"
android:layout_width="match_parent"
android:text="@string/banner"
android:gravity="center|left"
android:layout_below="@+id/title"
android:background="@drawable/ripple_effect"
android:paddingLeft="15dp"
android:textSize="15sp"
android:layout_height="45dp" />
これをドローアブルに追加
<?xml version="1.0" encoding="utf-8"?>
<!--this ribble animation only working for >= android version 21-->
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/click_efect" />
これを試して。
これを試して。これは私のために働いています。
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
@Bikesh M Annur(こちら)が投稿したよく投票されたソリューションが機能しない場合は、次を使用してみてください。
<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />
<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />
また、次の理由でandroid:clickable="true"
追加を使用する場合android:focusable="true"
:
「クリック可能であると宣言されているが、フォーカス可能であると宣言されていないウィジェットには、キーボードからアクセスできません。」
追加
android:clickable="true"
android:focusable="true"
波及効果
android:background="?attr/selectableItemBackgroundBorderless"
選択可能な効果
android:background="?android:attr/selectableItemBackground"
ボタン効果
android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
または、このライブラリ(android 9+)を使用してみてください:RippleEffect
統合
dependencies {
compile 'com.github.traex.rippleeffect:library:1.3'
}
使用法:
<com.andexert.library.RippleView
android:id="@+id/more"
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:layout_toLeftOf="@+id/more2"
android:layout_margin="5dp"
rv_centered="true">
<ImageView
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:src="@android:drawable/ic_menu_edit"
android:layout_centerInParent="true"
android:padding="10dp"
android:background="@android:color/holo_blue_dark"/>
</com.andexert.library.RippleView>
selectableItemBackground
、Android 4以上をターゲットにする場合はそのまま使用できます。
サークルリップルの場合:
android:background="?attr/selectableItemBackgroundBorderless"
長方形の波紋の場合:
android:background="?attr/selectableItemBackground"
ライブラリの使用。これはその1つです。依存関係を追加し、リップル効果を必要とする各要素の前に、以下のコードをxmlに入れます。
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">