2011-02-14 52 views

回答

3

一个简单的解决方案是将滚动它含有比容器大得多的ImageView的容器:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/Container" 
     android:layout_width="200dp" 
     android:layout_height="200dp" > 

     <ImageView 
      android:id="@+id/ImageView01" 
      android:layout_width="480dp" 
      android:layout_height="800dp" 
      android:src="@drawable/sky_bgr" > 
     </ImageView> 
    </LinearLayout> 

</LinearLayout> 

然后使用代码来滚动它:

public class StartActivity extends Activity { 
    private LinearLayout container; 
    private int currentX; 
    private int currentY; 

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

     setContentView(R.layout.main); 
     container = (LinearLayout) findViewById(R.id.Container); 
     container.scrollTo(220, 400); 
    } 

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

这里许多改进可制成如限制滚动范围等等 另一种方式是控制的ImageView矩阵... 然后你就可以将图像加载到一个位图,并在画布上绘制等它的一部分

-2

试试这个:

<ScrollView> 
<HorizontalScrollView> 
<ImageView/> 
</HorizontalScrollView> 
</ScrollView> 
+1

理论上好主意,但一个滚动阻止另一个 - 你不能同时在2.2上同时滚动x和y – Lumis 2011-02-14 13:26:13

3

为了让您的ImageView滚动,如果它不适合的高度,你可以在旁边的XML滚动型内的ImageView,&加这个参数 -

android:adjustViewBounds="true" 

下面是一个例子 -

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:background="@drawable/back" > 
    </ImageView> 
</ScrollView>