неправильно происходит рисование на imageView

305
21 сентября 2017, 14:39

 protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
 
 
      setContentView(R.layout.activity_fullscreen); 
        bundle = savedInstanceState; 
        mVisible = true; 
        mImageView = (ImageView) findViewById(R.id.imageView); 
        mControlsView = findViewById(R.id.fullscreen_content_controls); 
        mControlsView1 = findViewById(R.id.fullscreen_content_controls1); 
        mContentView = findViewById(R.id.fullscreen_content1); 
        btnTakePhoto = (Button) findViewById(R.id.makePhotoBtn); 
        textView = (TextView) mContentView; 
        TListener tListener = new TListener(); 
 
        mImageView.setOnTouchListener(tListener); 
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
 
        display = getWindowManager().getDefaultDisplay(); 
 
 
 
 
        // Set up the user interaction to manually show or hide the system UI. 
        mContentView.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View view) { 
                toggle(); 
            } 
        }); 
 
        // Upon interacting with UI controls, delay any scheduled hide() 
        // operations to prevent the jarring behavior of controls going away 
        // while interacting with the UI. 
 
        findViewById(R.id.makePhotoBtn).setOnTouchListener(mDelayHideTouchListener); 
 
        Button button = (Button)findViewById(R.id.albumBtn); 
        button.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
                photoPickerIntent.setType("image/*"); 
                startActivityForResult(photoPickerIntent, GALLERY_REQUEST); 
            } 
        }); 
 
 
 
    } 
     
     class TListener extends Activity implements View.OnTouchListener 
    { 
 
 
 
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
 
 
 
 
 
            x = event.getX(); 
            y = event.getY(); 
            DrawView drawView = new DrawView(mImageView.getContext()); 
            Path path = new Path(); 
            bitmap1 = ((BitmapDrawable)mImageView.getDrawable()).getBitmap(); 
            bitmap = bitmap1; 
            Canvas canvas ; 
            Paint paint = new Paint(); 
            paint.setColor(Color.GREEN); 
            // толщина линии = 15 
            paint.setStrokeWidth(15); 
 
 
            switch (event.getAction()) { 
 
                case MotionEvent.ACTION_DOWN: // нажатие 
                    sDown = "Down: " + x + "," + y; 
                    sMove = ""; 
                    sUp = ""; 
                    twoTouches++; 
                    if(twoTouches == 1) 
 
                    { 
                        time2 = new Date().getTime(); 
 
                    } 
                    else if(twoTouches == 2) 
                    { 
                        if((new Date().getTime() - time2) < 3000) 
                        { 
                            twoTouches =0; 
                            toggle(); 
 
                        } 
                    } 
                    else { 
                        x1 = x; 
                        y1 = y; 
 
                        break; 
                    } 
                case MotionEvent.ACTION_MOVE: // движение 
                    sMove = "Move: " + x + "," + y; 
                    bitmap = bitmap1; 
                    canvas = new Canvas(bitmap); 
                    drawView.draw(canvas); 
                    mImageView.invalidate(); 
                    mImageView.setImageBitmap(bitmap); 
 
 
                    break; 
                case MotionEvent.ACTION_UP: 
                    sMove = ""; 
                    sUp = "Up: " + x + "," + y; 
                    bitmap = bitmap1; 
                    canvas = new Canvas(bitmap); 
                    drawView.draw(canvas); 
                    mImageView.invalidate(); 
 
                    mImageView.setImageBitmap(bitmap); 
 
                    break;// отпускание 
 
                case MotionEvent.ACTION_CANCEL: 
                    sMove = ""; 
                    sUp = "Up: " + x + "," + y; 
                    bitmap = bitmap1; 
                    canvas = new Canvas(bitmap); 
                    drawView.draw(canvas); 
                    mImageView.invalidate(); 
                    canvas.drawPoint(x, y, paint); 
                    mImageView.invalidate(); 
 
                    break; 
            } 
            x1 = x; 
            y1 = y; 
 
 
            return true; 
        } 
 
    } 
 
class DrawView extends View { 
 
        Paint p; 
        RectF rectf; 
        Path path; 
        Path path1; 
        float diff; 
        public DrawView(Context context) { 
            super(context); 
            p = new Paint(); 
            p.setStrokeWidth(10); 
            p.setStyle(Paint.Style.STROKE); 
 
            path = new Path(); 
            path1 = new Path(); 
 
            diff = mImageView.getWidth()/display.getWidth(); 
        } 
 
 
        @Override 
            protected void onDraw(Canvas canvas) { 
 
                // очистка path 
 
            path.lineTo(x*diff,0); 
 
            path.lineTo(x*diff,mImageView.getMaxHeight()); 
            /* 
            // угол 
            path.moveTo(100, 100); 
            path.lineTo(150, 200); 
            path.lineTo(50, 200); 
 
            // треугольник 
            path.moveTo(250, 100); 
            path.lineTo(300, 200); 
            path.lineTo(200, 200); 
            path.close(); 
 
            // квадрат и круг 
            path.addRect(rectf, Path.Direction.CW); 
            path.addCircle(450, 150, 25, Path.Direction.CW); 
 
            // рисование path 
            p.setColor(Color.BLACK); 
            canvas.drawPath(path, p); 
 
 
            // очистка path1 
            path1.reset(); 
 
            // две пересекающиеся линии 
            path1.moveTo(50,50); 
            path1.lineTo(500,250); 
            path1.moveTo(500,50); 
            path1.lineTo(50,250); 
 
            // рисование path1 
            p.setColor(Color.GREEN); 
            canvas.drawPath(path1, p); 
 
 
            // добавление path1 к path 
            path.addPath(path1); 
 
            // смещение 
            path.offset(500,100); 
            */ 
 
            // рисование path 
            p.setColor(Color.BLUE); 
            canvas.drawPath(path, p); 
 
 
        } 
 
    }

Рисует на ImageView только в левой части, а нужно что бы на всём ImageView, для считывания координат использую onTouch() для рисования onDraw(); Помогите пожалуйста)

READ ALSO
Thinking in Java. Помогите понять задание: part14.project

Thinking in Java. Помогите понять задание: part14.project

ПроектНапишите систему, использующую динамические заместители для реализации транзакций: заместитель закрепляет транзакцию, если опосредованный...

335
Как узнать индекс кнопки при клике

Как узнать индекс кнопки при клике

Есть массив из кнопок

246
Проблема путей пакетов в RMI

Проблема путей пакетов в RMI

Представим, что у нас есть два приложенияОни имеют разные пакеты

287
Авторизация в OAuth + Google + scribejava

Авторизация в OAuth + Google + scribejava

Все прикрутил и пример вставил, даже реализовал веб-проектНо все время возвращает body=null

292