안드로이드에서 텍스트 뷰 또는 이미지 뷰에 파급 효과를 설정하는 방법은 무엇입니까?


127

Android Studio에서 textview 및 imageview에 파급 효과를 설정하고 싶습니다. 내가 어떻게 해?


1
먼저 질문을 자세히 설명하십시오. 실제로 필요한 것과 지금까지 시도한 것입니다. 간단하게 리플 효과를 원한다는 것은 매우 광범위한 질문입니다. 또한 원하는 것을 참조 할 수있는 링크를 제공 할 수도 있습니다 . com / help / how-to-ask
Anirudh Sharma

실제로 나는 텍스트보기 및 이미지보기 선택 / 선택 취소 효과에 효과를 원합니다.
Vasant

당신은 같은 검색을 시도 했습니까?
Anirudh Sharma

답변:


276

참조 : 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"
/>

2
좋은 롤리팝에서 나와 함께 일했지만 안드로이드 안드로이드 버전에 대한이 방법은 무엇입니까? 롤리팝 이전에 작동합니까?
Basheer AL-MOMANI

2
@Richard 1 년 전 KitKat (또는 ICS)에 문제가 있었으며 클릭 리스너가 해당 버전에서 android : clickable = "true"없이 작동하지 않았습니다
DoruChidean

25
최신 버전의 Android에서는 현재android:background="?android:attr/selectableItemBackground"
tmm1

2
사용자 정의 배경을 원할 때 이것을 어떻게 사용할 수 있습니까 ??
mrid sep

3
않고 /이 차이 Borderless youtube.com/watch?v=wOjA8tS5sbc
Gibolt

82

잔물결을 TextView / ImageView의 크기로 제한하려면 다음을 사용하십시오.

<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>

(더 좋아 보인다)


2
사용에 어떤 차이가 있습니까 selectableItemBackgroundselectableItemBackgroundBorderless
케쉬 쉬얍

왜 국경에 얽매이지 않았는지 모르겠으며 전체 레이아웃을 통해 확장되었습니다
VSB

4
@rakeshkashyap의 차이점은 selectableItemBackground가 리플을 뷰 크기 (너비 / 높이) 내에 유지한다는 것입니다. selectableItemBackgroundBorderless는 공식 계산기 앱 리플과 같은 다른 뷰보다 리플을 확장합니다.
Tudor

1
또한 >>> android : focusable = "true"를 설정해야합니다.
Amos

도움이됩니다. 감사.
Pooja

25

잔물결 효과에 대해서는 아래 답변을 참조하십시오.

Textview 또는 뷰에서 리플 :

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"

버튼 또는 이미지 뷰에 리플 :

android:foreground="?android:attr/selectableItemBackgroundBorderless"

4
selectableItemBackgroundBorderlessAPI 21 이상 임을 유의하십시오 . 아래에서 selectableItemBackground호환성 문제를 피할 수 있습니다
StevenTB

10

안드로이드 리플 배경을 사용할 수 있습니다

시작 효과

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();

좋은! Kotlin 버전이 있습니까?
rengineer

8
<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" />

이 시도.



5

위의 답변 외에도 UI 편집기의 경고를 피하기 위해 집중 가능

android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"

4

@Bikesh M Annur ( here )가 게시 한 잘 투표 된 솔루션 이 효과가 없다면 다음을 사용하십시오.

<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

또한 android:clickable="true"add를 사용할 때 android:focusable="true"다음과 같은 이유로 인해

" 클릭 가능하다고 선언되었지만 포커스 가능하도록 선언되지 않은 위젯은 키보드를 통해 액세스 할 수 없습니다. "


3

더하다 android:clickable="true" android:focusable="true"

잔물결 효과

android:background="?attr/selectableItemBackgroundBorderless"

선택 가능한 효과

android:background="?android:attr/selectableItemBackground"

버튼 효과

android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"

2

@Bikesh M Annur의 답변 외에도 지원 라이브러리를 업데이트하십시오. 이전에는 23.1.1을 사용했지만 아무 일도 일어나지 않았습니다. 그것을 23.3.0으로 업데이트하면 트릭이되었습니다.


2

서클 리플의 경우 : android:background="?attr/selectableItemBackgroundBorderless"

사각형 리플의 경우 : android:background="?attr/selectableItemBackground"


1

또는이 라이브러리 (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>

8
나는 그것을 오랫동안 사용했지만 Android 2.3을 목표로하지 않는 한 더 이상 권장하지 않습니다. 버그가 많고 게으 르며 상용구 코드를 생성합니다. 현재 모든 기기의 43 %에 Android 5 또는 6이 설치되어 있으므로 selectableItemBackgroundAndroid 4 이상을 타겟팅 할 때 사용할 수 있습니다 .
0101100101

0

추가하는 가장 좋은 방법 :

    <ImageView
        android:id="@+id/ivBack"
        style="?attr/actionButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:src="@drawable/ic_back_arrow_black"
        android:tint="@color/white" />

-4

라이브러리 사용 이것은 그들 중 하나입니다. 의존성을 추가하고 파급 효과가 필요한 각 요소 앞에 xml의 코드를 넣으십시오.

<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">

4
오, 아니요 누군가 이것을 읽으면 색상을 제어하려면 @Bikesh 또는 Karthik의 주석을 보는 것이 좋습니다.
디온 Segijn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.