【问题标题】:Images in ScrollView in androidandroid中ScrollView中的图像
【发布时间】:2011-02-14 09:42:07
【问题描述】:

在我的应用程序中,我想放置一个 .png 文件,我希望它在横向和纵向模式下都被视为滚动图像,请建议代码或示例....

【问题讨论】:

    标签: java android scrollview


    【解决方案1】:

    若要让您的 Imageview 在高度不合适时滚动,您可以在 xml 中的 ScrollView 中下一个 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>
    

    【讨论】:

      【解决方案2】:

      一个简单的解决方案是滚动一个包含比容器大得多的 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的矩阵... 然后您可以将图像加载到位图中并在画布上绘制它的一部分等

      【讨论】:

        【解决方案3】:

        试试这个:

        <ScrollView>
        <HorizontalScrollView>
        <ImageView/>
        </HorizontalScrollView>
        </ScrollView>
        

        【讨论】:

        • 理论上好主意,但一个滚动挡住另一个滚动 - 你不能在 2.2 上同时滚动 x 和 y
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 2013-08-31
        • 2011-08-26
        相关资源
        最近更新 更多