PDA

View Full Version : جابجا کردن یک view در framlayote به وسیله انگشت دست



r.miri19
دوشنبه 28 اردیبهشت 1394, 15:47 عصر
سلام
من به وسیله کد زیر یک عکس رو که در لایوت فرم هست جابه جا می کنم.
مشکل اینجاست که وقتی برای اولین بار روی عکس انگشت می کنم ، عکس یک پرش می کنه بعد کار می کنه و با حرکت انگشت درست جابه جا می شود. بار دوم که انگشت می کنم ، همه چیز خوب کار می کند و بار سوم و بار چهارم و . . . درست کار می کنه.نمی دونم این بار اول چرا اولش یه پرش انجام میده.
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView)findViewById(R.id.imageView1);

imageView.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int eid = event.getAction();
switch (eid) {
case MotionEvent.ACTION_MOVE:

RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();
int x = (int) event.getRawX();
int y = (int) event.getRawY();
mParams.leftMargin = x-50;
mParams.topMargin = y-50;
imageView.setLayoutParams(mParams);


break;

default:
break;
}
return true;
}
});
}




}

r.miri19
دوشنبه 28 اردیبهشت 1394, 19:28 عصر
کسی نیست یه نگاهی به این کد بندازه؟
اساتید کمک ک ک ک ک ک ک ک:قلب:

tux-world
دوشنبه 28 اردیبهشت 1394, 20:25 عصر
شما بهتره از ViewPager خود اندروید استفاده کنید. هیچ نیازی نیست بیایید خودتون دستی اینا رو بنویسید

r.miri19
دوشنبه 28 اردیبهشت 1394, 22:49 عصر
من 4 تا عکس دارم که در لابه از نوع FrameLayout هست.می خوام ان 4 تا غکس با انگشت جابه جا بشوند.کاره سختی هست؟ یا من روش رو اشتباه می رم؟
من کارم با FrameLayout اوکی می شه. 4 تا عکس 2 تا لاستیک ماسین هستند با بدنه و شیشه ها ، می خوام کاربر بچینشون با دست . . .
لطفا اگر کدی دارید بزارید برام

dalmif
سه شنبه 29 اردیبهشت 1394, 07:06 صبح
سلام دوست عزیز.
فکر میکنم این چیزی رو که می خواید در همین انجمن در تایپیک نمونه برنامه های کوچک و مفید پیدا کنید.
یا علی مدد

r.miri19
سه شنبه 29 اردیبهشت 1394, 17:11 عصر
سلام دوست عزیز.
فکر میکنم این چیزی رو که می خواید در همین انجمن در تایپیک نمونه برنامه های کوچک و مفید پیدا کنید.
یا علی مدد
جناب فایل مثل اینکه پاک شده، می تونید اینجا آپلود کنید.آخه خودتون اونجا هم آپلود کردید.

r.miri19
شنبه 02 خرداد 1394, 00:33 صبح
کسی دیگه بلد نیست؟

r.miri19
دوشنبه 04 خرداد 1394, 21:10 عصر
فروم خوابیده انگار . . .

amin_lni
سه شنبه 05 خرداد 1394, 11:24 صبح
RelativeLayout.LayoutParams layoutPrarms = (RelativeLayout.LayoutParams)this.getLayoutParams( );
int left = layoutPrarms.leftMargin + (int)(event.getX() - start.x);
int top = layoutPrarms.topMargin + (int)(event.getY() - start.y);
layoutPrarms.leftMargin = left;
layoutPrarms.topMargin = top;
this.setLayoutParams(layoutPrarms);



البته من تو کاستوم ایمیج ویو نوشتم

r.miri19
یک شنبه 28 تیر 1394, 17:03 عصر
با این کد حل شد.

@Override
public boolean onTouch(View myView, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
// x = event.getX();
// y = event.getY();
// dx = x - myView.getX();
// dy = y - myView.getY();
dx = myView.getX() - event.getRawX();
dy = myView.getY() - event.getRawY();
}
break;
case MotionEvent.ACTION_MOVE: {
// myView.setX(event.getX() - dx);
// myView.setY(event.getY() - dy);
myView.animate().x(event.getRawX() + dx).y(event.getRawY() + dy)
.setDuration(0).start();
}
break;
case MotionEvent.ACTION_UP: {
// your stuff
}
return false;
}
return true;
}