بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
درج نشدن بیش از یک خط در صفحه با تاچ کردن به کمک canvas
سلام دوستان بنده کد زیر رو برای ترسیم چندین خط در صفحه نوشتم که این کار با تاچ کردن انجام میشه . میخواستم بدونم مشکل کدم کجاست چون تنها آخرین خط رو بهم نشون میده و قبلی رو پاک میکنه بسیار ممنون میشم جواب بدین
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;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .