حرکت کردن عکس با هربار کلیک شدن بدون استفاده از انیمیشن (حل شد)
مشکل حل شد !
سلام دوستان؛
همانطور که از عنوان سئوال مشخصه میخوام با هربار کلیک شدن باتن، عکس به سمت چپ - راست - بالا - پایین حرکت کنه مثلأ 10 واحد، البته "بدون استفاده از انیمیشن" چون که انیمیشن برای کلیک مجدد، عکس از صفر دوباره شروع به حرکت میکنه و من اینو نمیخوام، میخوام با هربار کلیک شدن عکس به حرکت خودش ادامه بده یعنی حرکت قبلی عکس حفظ بشه یا در متغیری ذخیره بشه!
ممنون میشم راهنمایی بفرمایید !
یه RelativeLayout باز میکنید و توش View رو قرار میدید بعد هروقت کلیک شد متد زیر رو با مقادیر دلخواه اجرا کنید :
public static void setMargins (View view, int left, int top, int right, int bottom) {
ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
param.setMargins(left, top, right, bottom);
view.requestLayout();
}
محمدحسین @ کد شما رو به اینصورت قرار دادم
findViewById(R.id.btnLeft).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
img.setScaleType(ScaleType.MATRIX);
setMargins(img, 10, 0, 0, 0);
}
});
}
public static void setMargins(View view, int left, int top, int right, int bottom) {
ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
param.setMargins(left, top, right, bottom);
view.requestLayout();
}
که img همان ImageView هست که باید به سمت چپ حرکت کنه؛
ولی با این کد شما یه بار حرکت میکنه و در صورت کلیک شدن مجدد btnLeft عکس هیچگونه عکس العملی نشون نمیده !
بنا به راهنمایی دوستان عزیز کد رو با این صورت تغییر دادم ولی بازم فقط یه بار به سمت راست حرکت میکنه !؟
findViewById(R.id.btnLeft).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
int left = 10;
img.setScaleType(ScaleType.MATRIX);
setMargins(img, left , 0, 0, 0);
if (left == 10) {
left += 10;
}
}
});
}
public static void setMargins(View view, int left, int top, int right, int bottom) {
ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
param.setMargins(left, top, right, bottom);
view.requestLayout();
}
روشش اینه :
public void setMargins(View view, int left, int top, int right, int bottom) {
ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
left += param.leftMargin;
top += param.topMargin;
right += param.rightMargin;
bottom += param.bottomMargin;
param.setMargins(left, top, right, bottom);
view.requestLayout();
}
اینم نتیجه :
.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .