Android: Rysowanie na płótnie w Scrollview
Jestem całkiem nowy w programowaniu dla Androida. Moja aplikacja to przykładowa aplikacja z demonstracji api na stronie programisty Androida. Kiedy zmieniam parametry w tym rysunku, staje się on większy. Ten rysunek musi być wyświetlany w widoku przewijania (nie musi być zmniejszany, aby pasował do ekranu). To jest kod, którego użyłem:
DrawPoints.java
<code> public class DrawPoints extends myActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.routes); } public static class SampleView extends View { private Paint mPaint = new Paint(); private float[] mPts; /*here comes declaration of parametars private void buildPoints() { /*here comes some coding*/ } } public SampleView(Context context, AttributeSet attributeset) { super(context, attributeSet); buildPoints(); } @Override protected void onDraw(Canvas canvas) { Paint paint = mPaint; //here also comes code } } } </code>
tutaj jest kod XML:
routes.xml
<code><?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <HorizontalScrollView android:id="@+id/scrollView2" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- This code is just to make sure that scroll views work how I want them to work, image size is 625*351 px <ImageView android:id="@+id/image_View1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/bus_design" /> --> <my.package.DrawPoints.SampleView android:layout_width="fill_parent" android:layout_height="fill_parent" /> </HorizontalScrollView> </ScrollView> </code>
Po uruchomieniu tej aplikacji i naciśnięciu przycisku w głównych aplikacjach powodujących awarie. Rysunek wygląda tak, jak na rysunku 1, gdy nie korzystam z układu xml lub przeglądów:
http://i.stack.imgur.com/za5MP.png Rysunek 1
Próbowałem również użyć tego kodu po metodzie setContentView:
<code>View v = new SampleView(this); addContentView(v, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); </code>
a także ten:
<code>View v = new SampleView(this); ScrollView.LayoutParams lp = new ScrollView.LayoutParams(1000, 1000); addContentView(v, lp); </code>
kiedy używam kodów pokazanych powyżej, aplikacja wyświetla Rysunek 1 bez widoku przewijania, wygląda na to, że drugi widok zawartości zastępuje ten plik XML, ale nie wyświetla się poprawnie. Potem próbowałem użyć tego kodu po setContentView:
<code>View v = new SampleView(this); FrameLayout fl = new FrameLayout(this); fl.findViewById(R.id.FrameLayout1); fl.addView(v); </code>
Układ ramki (FrameLayout1) jest dodawany w pliku routes.xml po poziomym widoku przewijania. Po uruchomieniu aplikacji otrzymuję pusty ekran bez rysunku 1. Czy ktoś ma pomysł, jak zaktualizować mój kod, który wyświetlałby Rysunek 1 w ScrollView?
Z góry dziękuję!