スレッドに基づいてAndroid XML Layout の「include」タグは本当に機能しますか? およびLayoutInflater.javaタグは、および属性<include>
のみをサポートしているようです。したがって、コードを設定しても効果はありません。android:id
layout_*
android:visibility
background
stateListAnimator
@Stepaneのコードで以下の問題を修正するには:
メソッドは波及効果を適切に有効にしますが、SLA は起動されません。上昇が起こっているのが見えない
膨張したビューが透明な場合、立面図は表示されませんviewOutline
。影を表示するには、ビューに不透明な色を設定または使用する必要があります。
ViewOutlineProvider ドキュメントからの抜粋:
シャドウ キャスティングとクリッピングに使用されるアウトラインをビューが構築するためのインターフェイス。
設定するoutlineProvider
には、View#setOutlineProvider (ViewOutlineProvider プロバイダー)android:outlineProvider
メソッドを使用するか、 xml タグを介して設定できます。
更新されたコード:
LinearLayout root =(LinearLayout) findViewById(R.id.container);
StateListAnimator sla = AnimatorInflater.loadStateListAnimator(this, R.animator.lift_up);
root.setStateListAnimator(sla);
root.setClickable(true);
root.setOutlineProvider(ViewOutlineProvider.PADDED_BOUNDS);
root.setBackground(ContextCompat.getDrawable(this, R.drawable.ripple_effect));
波紋効果.xml
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="?android:colorAccent"
tools:ignore="NewApi">
<item>
<shape
android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<!-- Doesn't require outlineProvider
<solid android:color="@android:color/darker_gray"/>
-->
</shape>
</item>
</ripple>
res/animator/lift_up.xml
<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="48dp"/>
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"/>
</item>
</selector>