2011-07-22 41 views
1

我正在創建一個從GridView派生的自定義視圖。這包含具有縮放和平移功能的自定義ImageView。滾動和縮放功能很慢。如果父視圖是相同的自定義ImageView而不是GridView,則它完美地工作。我正在嘗試這樣做,因爲我需要一個靜態背景圖像,並在中心有一個交互區域。縮放和滾動的實現類似於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); 
} 

如果您在低迷變量設置爲true,你會看到ImageView的作品多爲好。你知道爲什麼使用GridView變焦和滾動不可用,或者如何解決這個問題?

我沒有使用「動態」ImageView到「靜態」ImageView,因爲我還沒有找到如何將ImageView嵌入到另一個ImageView。

在此先感謝。

回答

2

我發現迄今使用自定義的FrameLayout最簡單的和最簡單的解決方案:

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

    View myView1 = new MyFrameLayout(this); 

    setContentView(myView1); 
} 

其是如下所示實現,並使用在我張貼的第一示例中的MyImageView定製控制。

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); 
    } 
} 

另一種解決方案的建議,我通過twitter從Lawrence D'Olivero。它由子類視圖,緩存和using the OnDraw event組成滾動圖像在一個固定的背景作爲他的演示here