2017-05-28 4 views
0

ノーマルプレスのリップル効果を実現する方法についていくつかの基本的な知識があります。このような長いリプル効果を実現する方法

How to set state_selected in ripple drawable

私は、このような長押し波及効果を達成できるか、疑問に思いました。

  1. 押されると全体の項目が強調表示されます。
  2. しばらく押すと、リップルは指が押された領域から伝播を開始します。

文言からはっきりと説明するのはかなり難しいです。私はそのような効果を示すためにビデオを添付します。

https://www.youtube.com/watch?v=ebOYnGM0HCc

私は、このような長押し波及効果を達成する方法を知っているかもしれませんか?


これは、通常の波及効果がどのように見えるかです:一般的な方法を使用して達成されるhttps://www.youtube.com/watch?v=OJ_WRFy7pWM

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="demo.org.myapplication.MainActivity"> 

    <View 
     android:layout_width="250dp" 
     android:layout_height="250dp" 
     android:clickable="true" 
     android:background="?attr/selectableItemBackground" /> 

</LinearLayout> 
+0

あなたは 'selectableItemBackgroundBorderless'を実験しましたか? – azizbekian

答えて

0

これはマテリアルデザインのリップルエフェクト自体のデフォルトの動作です。ビューの背景または前景として、?attr/selectableItemBackgroundを追加することによって、このエフェクトをxmlまたは単純な方法で追加できます。これを有効にするには、ビューにonClickListenerの設定が必要であることを忘れないでください。そうしないと、エフェクトはあなたには見えません。

+0

しかし、そのような波紋効果は、指を持ち上げたときにのみ起こります。あなたの指がアイテムに押されている限り、リップルは起こりません。アイテムは強調表示された状態でのみ表示されます。 –

+0

'?attr/selectableItemBackground'によって達成される通常の波紋効果が何であるかを示すために別のビデオを投稿します。 –

0

ビューの幅と高さを計算できます。下のコードのようにアニメーションを開始できます。このコードは、中央からアニメーションを開始します。

button.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      int finalRadius=(int)Math.hypot(v.getWidth()/2,v.getHeight()/2); 
      Animator anim= null; 
      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
       anim = ViewAnimationUtils.createCircularReveal(v,v.getWidth()/2,v.getHeight()/2,0,finalRadius); 
       anim.setDuration(400); 

       anim.start(); 
      } 
      return true; 
     } 
    }); 
関連する問題