RelativeLayout
を拡張するプライベートクラスとを含むアクティビティがありSimpleOnScaleGestureListener
ます。リスナーのonScale
方法では、ユーザーが指を広げたりつまんだりして、レイアウト全体(ユーザーに表示されるすべてのもの)をズームイン/ズームアウトしたいと思います。
レイアウトへの変更を永続的にしないようにしたい、つまり、スプレッド/ピンチジェスチャが終了したときに、レイアウトを元の場所に戻したい(リセットonScaleEnd
は、SimpleOnScaleGestureListener
例えば)。
setScaleX
を呼び出してsetScaleY
、RelativeLayout
およびを使用して実装しようとしましたScaleAnimation
。どちらもスムーズなズーム(またはズームと呼ばれる可能性のあるもの)にはなりませんでした。ズームイン/ズームアウトすることも可能RelativeLayout
ですか?
私が残した唯一のアイデアは、キャッシュからスクリーンショットを読み取り、それをImageView
レイアウト全体の上に配置し、を介してこの画像をズームイン/ズームアウトすることですsetImageMatrix
。しかし、これをどのように実装するかはわかりません。
レイアウトにはフラグメントのコンテナも含まれている場合があります。これは、ズームが可能であると想定される時点では空です。ジェスチャでは、フラグメントはそのonScaleEnd
コンテナに入れられます(すでに実装されており、正常に機能しています)。これが私のレイアウトです:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_pinch"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
<!-- Layout containing the thumbnail ImageViews -->
<LinearLayout
android:id="@+id/thumbnail_group_pui"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c1"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c2"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c3"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c4"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c5"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c6"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c7"/>
</LinearLayout>
<!-- Layout containing the dashed boxes -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="152dp"
android:layout_centerVertical="true"
android:orientation="horizontal" >
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
<ImageView
android:layout_width="177dp"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="@drawable/dashed_box"/>
</LinearLayout>
<!-- Container for the fragments -->
<FrameLayout
android:id="@+id/fragment_container_pui"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
編集
私はこれらの2つの関連トピックを見つけました:
RelativeLayoutの拡張とdispatchDraw()のオーバーライドによるRelativeLayoutでズーム可能なViewGroup
ズームコンテンツの作成
しかし、私は実装を取得しませんでした。レイアウトを実際にスケーリングまたはリセットするには、他にどのようなメソッドを拡張クラスに含める必要がありますか?