2 Stimmen

Bilder in ScrollView in Android

In meiner App möchte ich eine .png-Datei platzieren und ich möchte, dass es als ein gescrolltes Bild sowohl im Hoch- als auch im Querformat angezeigt wird, bitte schlagen Sie einen Code oder ein Beispiel vor....

7voto

Khobaib Punkte 1547

Um Ihre Imageview scrollen, wenn es nicht in der Höhe passen, können Sie neben einem ImageView innerhalb einer ScrollView in der xml, & fügen Sie diesen Parameter -

android:adjustViewBounds="true"

Hier ein Beispiel.

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

3voto

Lumis Punkte 21217

Eine einfache Lösung besteht darin, einen Container zu scrollen, der eine ImageView enthält, die viel größer ist als der Container:

<?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>

Und verwenden Sie dann den Code, um ihn zu scrollen:

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

Hier können viele Verbesserungen vorgenommen werden, wie z.B. die Begrenzung des Bildlaufbereichs usw... Die andere Möglichkeit ist, die Matrix von ImageView zu kontrollieren... Dann können Sie ein Bild in eine Bitmap laden und einen Teil davon auf der Leinwand zeichnen usw.

-2voto

DKIT Punkte 3439

Versuchen Sie dies:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X