آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

درج نشدن بیش از یک خط در صفحه با تاچ کردن به کمک canvas

120578  8 سال پیش  8 سال پیش
0 0

سلام دوستان بنده کد زیر رو برای ترسیم چندین خط در صفحه نوشتم که این کار با تاچ کردن انجام میشه . میخواستم بدونم مشکل کدم کجاست چون تنها آخرین خط رو بهم نشون میده و قبلی رو پاک میکنه بسیار ممنون میشم جواب بدین

package com.example.amin.drawline1;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
static int i = 0;
static float static_x = 0;
static float static_y = 0;
static float static_x1 = 0;
static float static_y1 = 0;

ImageView drawingImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

View topLayout = this.findViewById(R.id.layoutmain);
topLayout.setOnTouchListener((View.OnTouchListener) this);

}

@Override
public boolean onTouch(View v, MotionEvent event) {

drawingImageView = (ImageView) this.findViewById(R.id.DrawingImageView);
Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()
.getDefaultDisplay().getWidth(), (int) getWindowManager()
.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);
drawingImageView.setImageBitmap(bitmap);
Canvas canvas = new Canvas(bitmap);

String tag = null;
i++;
if (i == 1) {
static_x = event.getX();
static_y = event.getY();


} else {
static_x1 = event.getX();
static_y1 = event.getY();

}

if (i == 2) {
Paint paint = new Paint();
paint.setColor(Color.rgb(255, 153, 51));
paint.setStrokeWidth(4);
canvas.drawLine(static_x, static_y, static_x1, static_y1, paint);
i = 0;
}
return false;
}
}

محتویات فایل xml  هم اینه

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/layoutmain"
tools:context="com.example.amin.drawline1.MainActivity">

<ImageView
android:id="@+id/DrawingImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
+2 0
سلام ، 6 خط اول متد onTouch رو در onCreate قرار بده ،و canvas رو هم در کلاس تعریف کن . فکر کنم درست بشه . (8 سال پیش)
0 0
ممنون داداش درست شد (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
120578  8 سال پیش
0 0

کد صحیح این پروژه این هست

package com.example.amin.drawline1;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
static int i = 0;
static float static_x = 0;
static float static_y = 0;
static float static_x1 = 0;
static float static_y1 = 0;

ImageView drawingImageView;
private Canvas canvas;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

View topLayout = this.findViewById(R.id.layoutmain);
topLayout.setOnTouchListener((View.OnTouchListener) this);

bitmap = Bitmap.createBitmap((int) getWindowManager()
.getDefaultDisplay().getWidth(), (int) getWindowManager()
.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);

canvas = new Canvas(bitmap);

}

@Override
public boolean onTouch(View v, MotionEvent event) {

drawingImageView = (ImageView) this.findViewById(R.id.DrawingImageView);
drawingImageView.setImageBitmap(bitmap);

String tag = null;
i++;
if (i == 1) {
static_x = event.getX();
static_y = event.getY();


} else {
static_x1 = event.getX();
static_y1 = event.getY();

}

if (i == 2) {
Paint paint = new Paint();
paint.setColor(Color.rgb(255, 153, 51));
paint.setStrokeWidth(4);
canvas.drawLine(static_x, static_y, static_x1, static_y1, paint);
i = 0;
}
return false;
}
}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .