2012-05-04 12 views
0

スクロール可能な画像のxとyの範囲を制限したいと思います。私が使用しているコードは次のとおりです。Android:制限のあるレイアウトスクロール範囲

public class MapActivity extends Activity { 


private LinearLayout container; 
private int currentX; 
private int currentY; 

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

    setContentView(R.layout.map); 
    container = (LinearLayout) findViewById(R.id.Container); 

    container.scrollTo(0, 0); 

} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 
      currentX = (int) event.getRawX(); 
      currentY = (int) event.getRawY(); 
      break; 
     } 

     case MotionEvent.ACTION_MOVE: { 
      int x2 = (int) event.getRawX(); 
      int y2 = (int) event.getRawY(); 
      container.scrollBy(currentX - x2 , currentY - y2); 
      currentX = x2;    
      currentY = y2; 
      break; 
     }  
     case MotionEvent.ACTION_UP: { 
      break; 
     } 
    } 
    return true; 
} 


} 

map.xmlはこのようになります。

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"> 
    <LinearLayout 
     android:id="@+id/Container" 
     android:layout_height="fill_parent"   
     android:layout_width="fill_parent"> 
    <ImageView 
     android:id="@+id/imageView1" 
     android:src="@drawable/aowmap"   
     android:layout_height="752px" 
     android:layout_width="1712px"></ImageView> 
    </LinearLayout> 
</LinearLayout> 

私は「コンテナ」のS xとyとでも画像のxとyが、運を取得するためのさまざまな方法を試してみました。私はコードがACTION_UPの下に置かれると確信していますが、私はxとyを見つけるために何をそこに置くべきか分かりません。

答えて

0

ディスプレイメトリックを見る必要があります。左にスクロールを制限するために画像ギャラリーで使用するコードスニペットは次のとおりです。同様のことができるはずです。

キーラインはmlp.setMargins(...)です。この関数に渡される最初のパラメータは、新しい左マージンを設定する場所で、同様のことをする必要があるので下マージンを設定します。

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
MarginLayoutParams mlp = (MarginLayoutParams) gallery.getLayoutParams(); 
mlp.setMargins(-(metrics.widthPixels/2+130),mlp.topMargin,mlp.rightMargin, mlp.bottomMargin); 

これが役に立ちます。 :)

+0

ええ、私はこれがどのように役立つか正確には分かりません。私はそれを見ない。私は "x = container.getTop()"を使用しようとしましたが、これは常に0を返します...ちょうどレイアウトの現在のxとyを見つける方法が必要です... – cerealspiller

+0

私が掲示したコードは、ユーザーがスクロールすることができる領域 - それはあなたが望むものではありませんか?おそらく私は誤解しています - あなたの試みが助けてくれるのかどうかの大雑把な図があれば、 – Kenny

+0

私はこれでかなり新しいので、このコードがどのように私のものに実装されるかはわかりません。編集:私はDisplayMetricsを調べて、チュートリアルを見つけることができるかどうかを見てみましょう。 – cerealspiller

関連する問題