سلام
من چطوری میتونم به تعداد نامحدود ایمیج ویو در زمان اجرا با فشردن یه دکمه اضافه کنم تو صفحه و بعدش جابه جا کنم و اگر کاربر خواست بتونه ایمیج ویو رو حذف کنه ؟
میشه راهنمایی کنید ؟
فرض کنید یه دایره داریم قراره کاربر داخل دایره رو با یه سری نقطه ( شکل ) پرش کنه .
جای اشیا مشخص نیستن. فقط باید داخل اون دایره پر بشه. همین
سلام.
من با چند خط کد تونستم در زمان اجرا چند تا دکمه ( ایمیج ) اضافه و حذف کنم و مشکلم حل شد.
ولی میخوام بعد از جابه جا کردن اون دکمه ( یا ایمیج) روی صفحه مختصاتش ذخیره بشه و کاربر بتونه مجددا این اطلاعات رو فراخوانی کنه.
و میخوام کاربر مجددا بتونه دکمه ها رو جا به جا کنه و اگر خواست مجددا روی اطلاعات قبلی ذخیره کنه.
میخوام از SharedPreferences استفاده کنم ( اطلاعات مختصات خیلی زیاد نیست). به نظر شما بعدا به مشکل برنمیخورم؟
فرض کنید 30 تا عکس داریم که کاربر قراره چندین دکمه رو تو نقاط مختلف این تصویر بچینه ....
کافیه هر بار کاربر روی یکی از 30 تا عکس کلیک کنه یه بررسی انجام بشه
1- قبلا سیو شده یا نه اگر سیو شده بود بره به 2
2- مختصات X و Y نقاط رو از آرایه فراخوانی کنه .... و انتقال بده اون دکمه رو در نقطه خاص
====> سوال من
من برای هر عکس یه آرایه منحصر به فرد باید داشته باشم ؟ XI,Y1
برای عکس دوم : آرایه X2 , آرایه Y2
برای عکس سوم : آرایه X3, Y3 ???
, .........
,.........
====================================
سوال آخرم چطوری تک تک دکمه ها X,Y بررسی بشه ؟
سلام.
(۱۳۹۴/۰۸/۲۹, ۰۱:۱۴ ق.ظ)'fvddesigner' نوشته: [ -> ]میخوام از SharedPreferences استفاده کنم ( اطلاعات مختصات خیلی زیاد نیست). به نظر شما بعدا به مشکل برنمیخورم؟
نه، اطلاعات ذخیره شده تسط SharedPreferences تا زمان uninstall برنامه اندروید توسط کاربر، حفظ می شوند. گاهی ممکن است برنامه نویس قصد داشته باشد اطلاعات حساسی را در برنامه اندروید ذخیره کند که نخواهد کسی به آنها دسترسی داشته باشد (یا در واقع، کار هکرها برای دسترسی به آنها را سخت کند)، در این موارد SharedPreferences توصیه نمی شود و ذخیره در پایگاه داده (ِDatabase) با استفاده از روش های encryption توصیه می شود (یا روش های encryption بدون استفاده از پایگاه داده).
(۱۳۹۴/۰۸/۲۹, ۰۱:۱۴ ق.ظ)'fvddesigner' نوشته: [ -> ]من برای هر عکس یه آرایه منحصر به فرد باید داشته باشم ؟ XI,Y1
برای عکس دوم : آرایه X2 , آرایه Y2
برای عکس سوم : آرایه X3, Y3 ???
, .........
این روش منطقی نیست، شما باید تنها دو آرایه داشته باشید (حالا یا آرایه (Array) یا لیست آرایه ای (ArrayList)، لغت آرایه را از نظر مفهوم ریاضی آن به کار می برم). یکی با نام X و دیگری با نام Y . بعد با اضافه شدن هر نقطه، یک عنصر به هر کدام از دو آرایه اضافه می کنیم (یا اگر طول آرایه را از اول تعیین کرده ایم، تنها کافی است که شماره متناظر با نقطه را بدانیم و به همان عنصر از آرایه ها اشاره کنیم).
بنابراین مختصات x هر نقطه در آرایه با نام X و مختصات y هر نقطه، در آرایه با نام Y ذخیره خواهد شد. مثلا برای نقطه پنجم، باید عنصر شماره 4 (چون شماره عناصر از 0 شروع می شود) از آرایه های X و Y فراخوانی شود.
(۱۳۹۴/۰۸/۲۹, ۰۱:۱۴ ق.ظ)'fvddesigner' نوشته: [ -> ]سوال آخرم چطوری تک تک دکمه ها X,Y بررسی بشه ؟
باید id ها منصربفردی برای آنها تعریف کنیم. مثلا با یک پیشوند متنی ثابت و یک پسوند عددی متغیر :
کد پیاچپی:
myImageView_0
myImageView_1
myImageView_2
...
پس با توجه به اینکه یک عدد متناظر با هر ImageView است، با همان عدد هم می توانیم id آنها را شناسایی کنیم و کل منطق این بخش از برنامه اندروید بر همین اساس خواهد بود.
این کدهاست و ولی خطا میده ... با آی دی هم که سرچ می کنم بین ویوها خطا داد.
کد پیاچپی:
int totalid = main.getChildCount();
SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
String sTag;
k = 0;
for (int c = 0; c <= totalid; c++) {
sTag = String.valueOf(view.findViewById(++c).getTag());
if (sTag == "btn" + String.valueOf(++c)) {
x1[k] = view.findViewById(++c).getX();
y1[k] = view.findViewById(++c).getY();
k++;
SharedPreferences.Editor editor = shared.edit();
editor.putFloat("x" + k, x1[k]);
editor.apply();
}
}
سلام من مشکل کدمو حل کردم.
منتها میخوام دکمه های ( ایمیج) های داینامیکی رو تو صفحه جا به جا کنم ... من از دو رویداد setOnClickListener , onTouch برای جا به جا کردن شی استفاده کردم.
اون متغییر FLAG وجه تمایز رویداد های کلیک و setOnClickListener , onTouch چون من میخوام با کلیک روی دکمه اون دکمه حذف بشه.
کد پیاچپی:
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE){
flag=false;
view.setVisibility(View.INVISIBLE);
return true;
} else {
flag = true ;
return false;
}
}
});
btn.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
float currX,currY;
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
// do nothing
break;
case DragEvent.ACTION_DRAG_EXITED:
// do nothing
break;
case DragEvent.ACTION_DROP:
v.setVisibility(View.VISIBLE);
v.setX(event.getX());
v.setY(event.getY());
break;
default:
break;
}
return true;
}
});
سلام
نحوه ی بدست آوردن طول آرایه موجود در SharedPreferences به چه شکله ؟
فکر کنم اینه درسته ؟
کد پیاچپی:
int size = mSharedPreference1.getInt("Status_size", 0);