بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
رسم خط به وسیله تاچ
با سلام
من در یکی از لایه های Activity میخوام به وسیله کلاس Touch خطی را رسم کنم.
که در رویداد Action_Up این خط به صورت خودکار پاک بشه.
حال نقاط X و Y ابتدایی و پایانی رو به من بده تا در دیتابیسم ذخیره کنم..
این مسوله برای من خیلی مهمه لطفه راهنماییم کنید..
خیلی گشتم ولی نتیجه ای نگرفتم
با تشکر
0
0
شاید بتونید از canvas, ondraw , paint استفاده کنید و مشکلتونو حل کنید.
(10 سال پیش)
0
0
بله درسته اما به چه شکل....
من کدای زیادی رو امتحان کردم ولی خب نشد..
واقعا داره خستم میکنه..
اگه میتونید نمونه کد بدید ممنون میشم. (10 سال پیش)
0
0
بله درسته اما به چه شکل....
من کدای زیادی رو امتحان کردم ولی خب نشد..
واقعا داره خستم میکنه..
اگه میتونید نمونه کد بدید ممنون میشم. (10 سال پیش)
0
0
البته فکر کردن راجع به کد وقت میبره اما ایده ای که من به فکرم میرسه اینه که شما میتونید یک image را که در آن عکس خط باریکی انداختید و با شروع عملیات تاچ مثلا از راست به چپ به طول image افزوده میشود.
(10 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Reza
10 سال پیش
+2
0
سلام ، این کدها رو در یه کلاس جدا کپی کنید و از اون کلاس یه نمونه بندازید داخل Layout :
public class DrawingBoard extends ImageView {
Paint linePaint;
boolean mustDraw;
private float x1;
private float x2;
private float y1;
private float y2;
public DrawingBoard(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize();
}
public DrawingBoard(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
public DrawingBoard(Context context) {
super(context);
initialize();
}
//===========================================================================
private void initialize() {
linePaint = new Paint();
linePaint.setAntiAlias(true);
linePaint.setColor(Color.CYAN);
linePaint.setStrokeWidth(1);
}
//===========================================================================
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mustDraw) {
canvas.drawLine(x1, y1, x2, y2, linePaint);
}
}
//===========================================================================
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mustDraw = true;
x1 = event.getX();
y1 = event.getY();
break;
case MotionEvent.ACTION_MOVE:
x2 = event.getX();
y2 = event.getY();
invalidate();
break;
case MotionEvent.ACTION_UP:
mustDraw = false;
invalidate();
break;
}
return true;
}
}
البته نام پکیج و import ها یادت نره . در مورد ذخیره کردن ، همون مقادیر x1 , x2 , y1 , y2 رو میتونی با آموزش دیتابیس استاد و یا با SharedPreferences انجام بدی . منظورت همین بود ؟
شما اگه یه درس از دروس بخش 13 رو مطالعه کنین متوجه میشین . نیازی به فراخوانی نیست ( البته اگه از داخل همون کلاس میخواین مقادیر رو در دیتابیس ذخیره کنین ) . شما وقتی اون کلاس رو میسازین و سیو میکنین در قسمت Graphical layout تب custom & Library Views رو باز کنین و Refresh رو بزنید تا همون کلاسی که ساختین رو مانند سایر کلاسها نشون بده . حالا مثل هر کنترل دیگه ای اونو Drag & Drop کن روی Layout و بهش سایز بده . حالا برنامه رو اجرا کن و روش کلیک و Move کن ببین چه اتفاقی میفته و مطابق سلیقه خودت کدها رو تغییر بده .پیشنهاد میکنم بخش 13 رو حتما مطالعه کن و وقت خودتو نگیر . هر ساعت این آموزش ها شما رو 100 ساعت جلو میندازه . (10 سال پیش)
آقا رضا یه دنیا ممنون
اصلی ترین مسئلمو حل کردی..
حالا قسمت ذخیره اطلاعات که X و Y ابتدایی و پایانی به همراه عملکرد بازیکن و نام بازیکن هست. که باید حتما در کلاس اصلی باید با هم ذخیره بشن..
چطور X و Y ابتدایی و پایانی رو در کلاس اصلی فراخوانی کنم که به همراه عملکرد بازیکن و نام بازیکن در دیتابیسم ذخیره کنم؟؟؟
بازم ممنون عزیزم (10 سال پیش)
اطلاعات من زیاده و از دیتابیس باید استفاده کنم.
خب حالا اگه من بخوام توی کلاس DrawingBoard از SharedPreferences استفاده کنم و چهار متغیرم رو ( x1 , x2 , y1 , y2) توی اون ذخیره کنم بعد در کلاس اصلیم صدا بزنم و اونجا به همراه داده های دیگه ای که دارم در دیتابیسم ذخیره کنم؟!!!! این کار امکان پذیر هست؟
(10 سال پیش)
سلام آقا رضا
بازم ممنونم که بهم کمک کردین..
همچیم کار میکنه فقط من میخوام زمین بازیمو به 24 قسمت مساوی تقسیم کنم..
زمین بازیم همون لایه ای هست که خودتون راهنماییم کردین..همون کلاس بالایی!!
البته تا جایی که سرچ کردم نمیشه مختصات دلخواهی به لایه داد .من هم با یه کد امدم ماکسیمم xy رو گرفتم
که بتونم بر همون اساس زمین بازیمو تقسیم بندی کنم.کدشو پایین میذارم ببینین..البته این سوالو جای درج کردم کسی نظر نذاشت گفتم شاید شما بتونید کمکم کنید..ممنون میشم (10 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .