Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Android: Drawing on Canvas in Scrollview
- 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
- }
- }
- }
- <?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>
- View v = new SampleView(this);
- addContentView(v, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
- ViewGroup.LayoutParams.FILL_PARENT));
- View v = new SampleView(this);
- ScrollView.LayoutParams lp = new ScrollView.LayoutParams(1000, 1000);
- addContentView(v, lp);
- View v = new SampleView(this);
- FrameLayout fl = new FrameLayout(this);
- fl.findViewById(R.id.FrameLayout1);
- fl.addView(v);
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/app_layout" android:orientation="horizontal"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
- <!-- SCENE -->
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/scene_layout"
- android:drawingCacheQuality="low"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <com.testiranje.Kristijan.TwoDScrollView
- android:id="@+id/scene_scroller" android:drawingCacheQuality="low"
- android:scrollbars="horizontal"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/scene_container"
- android:drawingCacheQuality="low"
- android:background="@drawable/map"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
- <com.testiranje.Kristijan.SampleView
- android:layout_height="fill_parent"
- android:layout_width="fill_parent">
- </com.testiranje.Kristijan.SampleView>
- <!-- <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/scene_background" android:drawingCacheQuality="low"
- android:background="@drawable/map"
- android:layout_width="fill_parent" android:layout_height="fill_parent" /> -->
- </RelativeLayout>
- </com.testiranje.Kristijan.TwoDScrollView>
- </RelativeLayout>
- </RelativeLayout>
- public class SampleView extends View {
- private Paint mPaint = new Paint();
- private float[] mPts;
- private static final float SIZE = 1000;
- private static final int SEGS = 50;
- private static final int X = 0;
- private static final int Y = 1;
- private void buildPoints() {
- final int ptCount = (SEGS + 1) * 2;
- mPts = new float[ptCount * 2];
- float value = 0;
- final float delta = SIZE / SEGS;
- for (int i = 0; i <= SEGS; i++) {
- mPts[i*4 + X] = SIZE - value;
- mPts[i*4 + Y] = 0;
- mPts[i*4 + X + 2] = 0;
- mPts[i*4 + Y + 2] = value;
- value += delta;
- }
- }
- public SampleView(Context context){
- super(context);
- //initSampleView();
- buildPoints();
- }
- //This constructor is very important because withouth of this
- //you can't insert this view in xml
- public SampleView(Context context, AttributeSet attrs) {
- super(context, attrs);
- //initSampleView();
- buildPoints();
- }
- /*private final void initSampleView() {
- mPaint = new Paint();
- mPaint.setAntiAlias(true);
- setPadding(3, 3, 3, 3);
- }*/
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- setMeasuredDimension(measureWidth(widthMeasureSpec),
- measureHeight(heightMeasureSpec));
- }
- /**
- * Determines the width of this view
- * @param measureSpec A measureSpec packed into an int
- * @return The width of the view, honoring constraints from measureSpec
- */
- private int measureWidth(int measureSpec) {
- int result = 0;
- //This is because of background image in relativeLayout, which is 1000*1000px
- measureSpec = 1001;
- int specMode = MeasureSpec.getMode(measureSpec);
- int specSize = MeasureSpec.getSize(measureSpec);
- if (specMode == MeasureSpec.UNSPECIFIED) {
- // We were told how big to be
- result = specSize;
- }
- return result;
- }
- /**
- * Determines the height of this view
- * @param measureSpec A measureSpec packed into an int
- * @return The height of the view, honoring constraints from measureSpec
- */
- private int measureHeight(int measureSpec) {
- int result = 0;
- //This is because of background image in relativeLayout, which is 1000*1000px
- measureSpec = 1001;
- int specMode = MeasureSpec.getMode(measureSpec);
- int specSize = MeasureSpec.getSize(measureSpec);
- if (specMode == MeasureSpec.UNSPECIFIED) {
- // Here we say how Heigh to be
- result = specSize;
- }
- return result;
- }
- @Override
- protected void onDraw(Canvas canvas) {
- Paint paint = mPaint;
- canvas.translate(10, 10);
- paint.setColor(Color.RED);
- paint.setStrokeWidth(0);
- canvas.drawLines(mPts, paint);
- paint.setColor(Color.BLUE);
- paint.setStrokeWidth(3);
- canvas.drawPoints(mPts, paint);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement