2011-07-22 6 views
1

GridViewから派生したカスタムビューを作成しています。これにはズーム機能とパン機能を備えたカスタムImageViewが含まれています。スクロールとズームの機能は低速です。親ビューがGridViewの代わりに同じカスタムImageViewであれば、それは完全に機能します。私はこれをやろうとしています。なぜなら、中心にインタラクティブな領域を持つ静的な背景イメージが必要だからです。ズームとスクロールはthis articleのように実装されています。私は問題を再現したテストプロジェクトをアップロードしましたhere。 OnCreateの方法は次のように実装されていますAndroidでGridViewのズームやスクロールが遅い

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    View myView1; 
    boolean sluggish = false; 

    if (sluggish) { 
     myView1 = new MyGridView(this); 
    } 
    else { 
     myView1 = new MyImageView(this);   
    } 

     setContentView(myView1); 
} 

あなたはImageViewのは、そのための非常に良い作品がわかりますtrueに低迷変数を設定した場合。なぜGridViewを使ってズームやスクロールが使えなくなったり、どうやって解決できるのか、ご存じですか?

ImageViewを別のImageViewに埋め込む方法が見つからないため、「静的」ImageViewに「動的」ImageViewを使用していません。

ありがとうございます。

答えて

2

私がこれまでにカスタムでframeLayoutを使用していた、最も簡単なと最も簡単な解決策:以下に示すように実装され、私が掲示最初の例ではMyImageViewカスタムコントロールを使用している

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    View myView1 = new MyFrameLayout(this); 

    setContentView(myView1); 
} 

public class MyFrameLayout extends FrameLayout { 

    public MyFrameLayout(Context context) { 
     super(context); 

     MyImageView i1 = new MyImageView(context); 

     this.addView(i1); 


     MyImageView i2 = new MyImageView(context); 

     LayoutParams lp = new LayoutParams(300, 300); 
     lp.leftMargin = 100; 
     lp.topMargin = 100; 
     lp.gravity = 0; 

     this.addView(i2, lp); 
    } 
} 

代替解決策の提案私はLawrence D'Oliveroからtwitter経由で入手しました。 Viewをサブクラス化し、キャッシングし、using the OnDraw eventというスクロールイメージを固定の背景にデモのhereとして作成します。

関連する問題