2017-01-16 8 views
0

RecyclerView(またはそのアダプタまたはレイアウトマネージャ)を取り込み、すべてのRecyclerViewの子のレンダリングである大きなビットマップを吐き出して、デバイスの画面サイズが全長であるかどうかを調べるJavaメソッドを作成しようとしています有限リスト全体の任意のRecyclerViewの子供をキャンバスにレンダリングしますか?

mRecyclerView.draw(canvas)は、現在表示されているすべての子をレンダリングするように機能しますが、mRecycler.getChildAt(x)(x>表示位置は常にnullを返します)。

任意のアプローチに開き、本当に唯一の目標は、自分のデータをカスタム記述する必要があり、この大規模なビットマップを生成するために、Androidの既存のビューのレンダリングシステムを使用して、ではないとして - ための方法に>ビットマップコード

+0

あなたが求めているのは、RecyclerViewのポイントに反して、すべてのアイテムが効率のためにビューを割り当てられていないということです。それをやりたければ、RecyclerViewを使わず、巨大なScrollViewだけを使うほうが良いでしょう(そして、後でもっと早くOOMに行くことに同意してください)。 –

答えて

1

RecyclerViewは、(必要に応じてビューを再利用し、ビューにデータをバインドする)、すべてのRecyclerViewビューがメモリ内で完全に利用可能である場合、一定の時間はありません。ユーザーインターフェイスを中断することが問題でない場合は、RecyclerView.scrollToPositionを使用してRecyclerViewをスクロールして、すべてのビューをレンダリングするようにすることができます。表示されている場合は各セクションのビットマップを収集し、必要に応じてビットマップを結合することができます。

関連する問題