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....
Antworten
Zu viele Anzeigen?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>
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.