آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

گیر کرده  11 سال پیش  11 سال پیش
+1 0

سلام

من به وسیله کد زیر یک عکس رو که در لایوت فرم هست جابه جا می کنم.

مشکل اینجاست که وقتی برای اولین بار روی عکس انگشت می کنم ، عکس یک پرش می کنه بعد کار می کنه و با حرکت انگشت درست جابه جا می شود. بار دوم که انگشت می کنم ، همه چیز خوب کار می کند و بار سوم و بار چهارم و . . .  درست کار می کنه.نمی دونم این بار اول چرا اولش یه پرش انجام میده.

 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;
}
});
}




}
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
raeesi  11 سال پیش
+1 0

 import android.R.drawable;
import android.support.v7.app.ActionBarActivity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity implements OnTouchListener {
	ImageView _view;
	ViewGroup _root;
	private int _xDelta;
	private int _yDelta;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		_root = (ViewGroup)findViewById(R.id.root);
		  _view = new ImageView(this);
		    _view.setImageResource(R.drawable.example_image);

		    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150, 50);
		    layoutParams.leftMargin = 50;
		    layoutParams.topMargin = 50;
		    layoutParams.bottomMargin = -250;
		    layoutParams.rightMargin = -250;
		    _view.setLayoutParams(layoutParams);

		    _view.setOnTouchListener(this);
		    _root.addView(_view);
		}

		public boolean onTouch(View view, MotionEvent event) {
		    final int X = (int) event.getRawX();
		    final int Y = (int) event.getRawY();
		    switch (event.getAction() & MotionEvent.ACTION_MASK) {
		        case MotionEvent.ACTION_DOWN:
		            RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
		            _xDelta = X - lParams.leftMargin;
		            _yDelta = Y - lParams.topMargin;
		            break;
		        case MotionEvent.ACTION_UP:
		            break;
		        case MotionEvent.ACTION_POINTER_DOWN:
		            break;
		        case MotionEvent.ACTION_POINTER_UP:
		            break;
		        case MotionEvent.ACTION_MOVE:
		            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
		            layoutParams.leftMargin = X - _xDelta;
		            layoutParams.topMargin = Y - _yDelta;
		            layoutParams.rightMargin = -250;
		            layoutParams.bottomMargin = -250;
		            view.setLayoutParams(layoutParams);
		            break;
		    }
		    _root.invalidate();
		    return true;
	}
	}

 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</RelativeLayout>

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .