ピンチズームを実装しているリストビューがあります。行の高さを変更するリストビューの各子ビューのサイズを変更します。これらの行のサイズが変更されると、リスト ビューの一番上のアイテムは静止したままになり、その下のアイテムは上に移動してスラック スペースを回復します。
ピンチ ズームを 2 つの部分で実装しようとしています。まず、ズームの原点を表示リストの中心にします (今言ったように、今は一番上です)。次に、ズーム ジェスチャの焦点に基づいて原点を調整します。
私の問題は、ズームの原点をスムーズに調整できないことです。私が今持っている方法はリストをスクロールしますが、ビューが更新されてから数ミリ秒後にスクロールします(実際にはかなり悪いように見えます...本当に途切れ途切れです)。
以下のコードで行っていることを行うためのより良い方法はありますか?
mMsgs はリストビューです。
// Center align the scroll
int yviewspace = mMsgs.getHeight();
int newyviewspace = (int) (yviewspace * zoomratio);
//mMsgs.scrollBy(0, -(yviewspace - newyviewspace) / 2); //This is smooth, but, sadly, it doesn't work on listviews.
mMsgs.smoothScrollBy(-(yviewspace - newyviewspace) / 2, 0);