앱에 스와이프하여 새로고침 추가

스와이프하여 새로고침 사용자 인터페이스 패턴은 세로 스와이프를 감지하고, 고유한 진행률 표시줄을 표시하고, 앱에서 콜백 메서드를 트리거하는 SwipeRefreshLayout 위젯 내에서 전적으로 구현됩니다. 위젯을 ListView 또는 GridView의 상위 요소로 레이아웃 파일에 추가하고 사용자가 스와이프할 때 호출되는 새로고침 동작을 구현하여 이 동작을 사용 설정합니다.

이 페이지에서는 기존 레이아웃에 위젯을 추가하는 방법을 설명합니다. 스와이프 동작을 사용할 수 없는 사용자가 외부 기기로 수동 업데이트를 트리거할 수 있도록 작업 모음 오버플로 영역에 새로고침 작업을 추가하는 방법도 보여줍니다.

SwipeRefreshLayout 종속 항목 추가

앱에서 SwipeRefreshLayout을 사용하려면 build.gradle 파일에 다음 종속 항목을 추가합니다.

Groovy

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
}

SwipeRefreshLayout 위젯 추가

스와이프하여 새로고침 위젯을 기존 앱에 추가하려면 SwipeRefreshLayout를 단일 ListView 또는 GridView의 상위 요소로 추가합니다. SwipeRefreshLayout는 단일 ListView 또는 GridView 하위 요소만 지원합니다.

다음 예는 ListView가 포함된 기존 레이아웃 파일에 SwipeRefreshLayout 위젯을 추가하는 방법을 보여줍니다.

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

SwipeRefreshLayout 위젯을 ListFragment와 함께 사용할 수도 있습니다. 레이아웃에 ID가 "@android:id/list"ListView가 포함되어 있으면 스와이프하여 새로고침 기능이 자동으로 지원됩니다. 그러나, 이러한 방식으로 ListView를 명시적으로 선언하면 기본 ListFragment 뷰 구조가 대체됩니다. 기본 뷰 구조를 사용하려면 SwipeRefreshLayoutListFragment 동작 일부를 재정의합니다.

작업 모음에 새로고침 작업 추가

스와이프 동작을 실행할 수 없는 사용자가 수동 업데이트를 트리거할 수 있도록 앱의 작업 모음에 새로고침 작업을 추가합니다. 예를 들어 접근성 기능이 필요한 사용자는 키보드 및 D패드와 같은 외부 기기를 사용하여 작업 모음 작업을 트리거할 수 있습니다.

android:showAsAction=never 속성을 설정하여 새로고침 작업을 버튼이 아닌 메뉴 항목으로 추가합니다. 작업을 버튼으로 표시하면 사용자는 새로고침 버튼 작업이 스와이프하여 새로고침 작업과 다르다고 생각할 수 있습니다. 작업 모음에서 새로고침 작업이 덜 눈에 띄도록 하면 사용자가 스와이프 동작으로 수동 업데이트를 실행하는 동시에 D패드 사용자가 찾는 액세스 가능한 옵션을 유지할 수 있습니다.

다음 코드는 오버플로 영역에 스와이프하여 새로고침 작업을 추가하는 방법을 보여줍니다.

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_refresh"
        android:showAsAction="never"
        android:title="@string/menu_refresh"/>
</menu>