Сделать пользовательский индикатор SwipeRefreshLayout?

Как я могу сделать пользовательский индикатор, который бы использовал объект с возможностью рисования с пользовательской анимацией для SwipeRefreshLayout?

Я просмотрел исходный код для SwipeRefreshLayout, и я заметил, что объект CircleImageView был закрытым.

Есть ли способ изменить ImageView?

Ответ 1

Вы можете изменить выделение с помощью отражения, не уверен, насколько хороша эта идея. Что-то вроде:

mSwipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.your_swiperefresh_id);
try {
    Field f = mSwipeRefreshLayout.getClass().getDeclaredField("mCircleView");
    f.setAccessible(true);
    ImageView img = (ImageView)f.get(mSwipeRefreshLayout);
    img.setImageResource(R.drawable.your_drawable_file);
} catch (NoSuchFieldException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
}

Ответ 3

Если вы не хотите использовать отражение, как в примере выше, вы можете получить дочерний элемент из вашего SwipeRefreshLayout с индексом 0. Это будет CircleImageView, чтобы вы могли установить любой Drawable к нему.