地球上の誰もがピンチズームのすべてを機能させることができるように見えるので、私は明らかな何かを見逃しているに違いありません. 主な違いは、ほとんどの人が画像をズームしているように見えるのに対し、私は一連のテキスト ビューを含む GridLayout (android-support-v7-gridlayout) を使用していることです。目標は単純に思えます: ユーザーがズームインできるようにして、フル グリッドの一部をより大きなサイズで表示できるようにすることです。
グリッドはきれいに描画され、水平および垂直スクロールは正常に機能します。次に、指を離して 2 本指のジェスチャー (ズーム) を実行すると、onScale が呼び出されたというログ メッセージが表示されますが、何も起こりません。2 本の指を動かすと (ピンチ)、すべてのビューが消えます (ただし、スクロール バーは残ります)。
私はマトリックス変換を見てきましたが、それらが画像ビュー以外で機能することを見ていません。
基本的なレイアウト xml:
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<HorizontalScrollView
android:id="@+id/chooser_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</HorizontalScrollView>
</ScrollView>
その後の活動では
private ZoomGridLayout playerGrid;
そしてonCreateで:
ViewGroup gridParent = (ViewGroup) findViewById(R.id.chooser_layout);
playerGrid = new ZoomGridLayout(getBaseContext());
playerGrid.setRowCount(8);
playerGrid.setColumnCount(8);
LayoutParams layout =
new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
playerGrid.setDetector();
gridParent.addView(playerGrid, layout);
次に、150 個までの小さなテキスト ビューをグリッドに追加します。ZoomGridLayout の最初の例を次に示します。
public class ZoomGridLayout extends GridLayout {
private final static String TAG = "ZGL";
private ScaleGestureDetector scaleDetector;
private Context context;
public void setDetector() {
scaleDetector = new ScaleGestureDetector(context, new ScaleGesture());
}
public ZoomGridLayout(Context c) {
super(c);
context = c;
}
@Override
public boolean onTouchEvent (MotionEvent event) {
scaleDetector.onTouchEvent(event);
return true;
}
private class ScaleGesture
extends ScaleGestureDetector.SimpleOnScaleGestureListener
{
@Override
public boolean onScale(ScaleGestureDetector detector) {
Log.v(TAG, detector.toString());
ScaleAnimation scale =
new ScaleAnimation(detector.getPreviousSpan(),
detector.getCurrentSpan(),
detector.getPreviousSpan(),
detector.getCurrentSpan());
scale.setFillAfter(true);
startAnimation(scale);
return true;
}
}
}
私はここ数日間、これに対して頭を悩ませてきました。私は Android プログラミングは初めてなので、ライブラリにはあまり詳しくありませんが、経験豊富な開発者です。どんな指針も素晴らしいでしょう。ティア。