2012-05-02 15 views
2


みなさんこんにちは!
私は拡大鏡を実装しようとしています。 コンテンツを大きく見えるようにする必要があります。アンドロイドで拡大鏡を作成するには

数時間後、私には1つの解決策があります。私のXMLファイルに

、このような何か(擬似コード)を宣言:このコードZoomViewで

<ZoomView> 
    some other content views 

    <View 
     android:id="@+id/magnifier 
    /> 
</ZoomView> 

は、カスタムビューはRelativeLayoutを拡張しています。 magnifier idは、コンテンツをズームする実際の拡大鏡です。


magnifier http://s019.radikal.ru/i611/1205/db/b1e170626539.png

だから何がコードで起こる:

これは、それがどのように見えるかです。

ズームビューのonDrawメソッドでは、私はこれを行います。

@Override 
protected void onDraw(android.graphics.Canvas canvas) 
{ 
    Bitmap bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas bitmapCanvas = new Canvas(bitmap); 
    super.onDraw(bitmapCanvas); 

    // some code that detects magnifier view position and size, 
    // than gets 1 area image, scale it to make in 2x bigger. 
    // And then replace 2 area with this scaled image. 

    // draw result on canvas 
    canvas.drawBitmap(bitmap, new Matrix(), null); 
} 

このコードは正常に動作しますが、遅すぎます。誰かが私に他の解決策を教えてもらえますか、それともどのように最適化できますか?

申し訳ありません何か間違っている場合は、これが私の最初の質問です。

+0

素晴らしい!答えもコメントも5回もありません。たぶん誰かが私が間違っていることを教えてくれるでしょうか? – mig35

+2

FYI、3つのことが間違っています... ** 1。**あなたの質問は非常に幅広く、多くの要件を持っています(テキストを含むすべてのものを操作し、移動可能なものなど...)。 ** 2。**あなたは私たちに何らかの考えや可能性を提供していません(あなたが少なくともこれをあなた自身で最初に試みたことはわかりません)。 ** 3。** StackOverflowは、一般的な質問をしてコードを書くようにする場所ではありません。 – wattostudios

+0

ありがとうございます。私は私のポストを変更します。 – mig35

答えて

1

あなたは正しい軌道に乗っていますが、処理の一部をonDrawメソッドから取り除くことでパフォーマンスが向上すると思います。元のサイズの画像/コンテンツが静的であれば、onCreateの間に拡大されたバージョンのコンテンツを簡単に作成することができます(またはAsyncTaskのほうが良い)。そして、拡大鏡を移動すると、コンテンツのどの領域を毎回それを生成しようとするのではなく、拡大版を表示することができます。

コンテンツが動的である場合でも、コンテンツの定数コピーを2つ(通常のサイズと1つは拡大されていて、どちらも常に最新の状態に保たれている)にすることで同様の処理を実行できます。

あなたの解決策は正しい方向に向いています。私はこれが役立つことを願っています

+0

ありがとうございます。私はこれをやろうとします。後で結果を投稿します。 – mig35

関連する問題