Изображения в ScrollView в Android - PullRequest
1 голос
/ 14 февраля 2011

В моем приложении я хочу разместить файл .png и хочу, чтобы он просматривался как прокручиваемое изображение как в альбомном, так и в портретном режимах. Пожалуйста, предложите код или пример ....

Ответы [ 3 ]

3 голосов
/ 19 апреля 2013

Чтобы сделать прокрутку Imageview, если она не умещается по высоте, вы можете затем добавить ImageView внутри ScrollView в xml и добавить этот параметр -

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>
3 голосов
/ 14 февраля 2011

Простое решение заключается в прокрутке контейнера, который содержит 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 ... Затем вы можете загрузить изображение в растровое изображение и нарисовать его часть на холсте и т. Д.

0 голосов
/ 14 февраля 2011

Попробуйте это:

<ScrollView>
<HorizontalScrollView>
<ImageView/>
</HorizontalScrollView>
</ScrollView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...