0

スクロール可能な画像の x と y の範囲に制限を設定したいと思います。私が使用しているコードは次のとおりです。

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>

「コンテナ」sxとy、さらには画像xとyを取得するためにさまざまな方法を試しましたが、うまくいきませんでした。コードがACTION_UPの下にあると確信していますが、xとyを見つけるためにそこに何を入れればよいかわかりません。

4

1 に答える 1

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

お役に立てれば!:)

于 2012-05-04T23:17:57.200 に答える