SwipeRefreshLayout
のカスタムアニメーションで描画可能なオブジェクトを使用するカスタムインジケーターを作成するにはどうすればよいですか?
SwipeRefreshLayout
のソースコードを調べたところ、CircleImageView
オブジェクトがプライベートであることがわかりました。
とにかくImageView
を変更することはありますか?
このアイデアがどれほど優れているかわからない場合は、リフレクションを介してドローアブルを変更できます。何かのようなもの :
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();
}
https://github.com/liaohuqiu/Android-Ultra-Pull-To-Refresh を試してください。システムウィジェットの変更は面倒です。
上記の例のようにリフレクションを使用したくない場合は、インデックスが0のSwipeRefreshLayoutから子を取得できます。 CircleImageViewになるので、任意のDrawableを設定できます。