दिलचस्प पोस्ट
कॉर – क्रॉस-डोमेन AJAX बिना JSONP सर्वर पर ऑरिजिन की अनुमति देकर Android एप्लिकेशन पर लॉग इन करने के लिए Google- खाता का उपयोग करना जावा की आभासी मशीन की अंत्यता क्या यह प्रोग्रामिंग के लिए iPhone को मूक करना संभव है? प्रॉक्सी सर्वर पर HTTPS कनेक्शन प्रोग्राम बैकस्टैक्स में पिछले खंड पर वापस जाएं हास्केल को संकलित करने से अधिक तेज़ पायथन? जावा से सबरेपोर्ट के साथ जैस्पर रिपोर्ट जेनरेट करें उपप्रवाह में पॉप-अप डायलॉग बॉक्स को कैसे शामिल करें अपेक्षित BEGIN_OBJECT को रेट्रोफ़िट किया गया था लेकिन BEGIN_ARRAY था एकता के साथ मैं एक नामांकित निर्भरता को कंस्ट्रक्टर में कैसे इंजेक्ट करूँ? फ्लास्क में रीडायरेक्ट करते समय एक पोस्ट अनुरोध करें गतिशील रूप से निर्मित तत्वों पर घटना बाध्यकारी है? जीसीसी: गणित पुस्तकालय को लिंक करने के लिए एलएम फ्लैग की आवश्यकता क्यों है? java.lang.IllegalStateException: सीडीएटीए टैग घोंसला नहीं हो सकता है

एंड्रॉइड स्क्रीन पर छवियां खींचें और ड्रॉप करें?

मैं प्रोजेक्ट उपयोगकर्ता पर छवि को एक स्थान पर स्क्रीन पर दूसरी स्थिति में ले जाने के लिए काम कर रहा हूं। मैंने छवि को स्थानांतरित करने के लिए एक नमूना कोड लिखा है लेकिन यहां समस्या यह है कि अगर मैं एक छवि ले जाती हूं तो पड़ोसी छवि भी चलती है। यहाँ नमूना कोड है। इस का कोई भी विचार।

Main.java

public class MainActivity extends Activity { int windowwidth; int windowheight; ImageView ima1,ima2; private android.widget.RelativeLayout.LayoutParams layoutParams ; // private android.widget.RelativeLayout.LayoutParams layoutParams ; //private android.widget.RelativeLayout.LayoutParams layoutParams ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); windowwidth = getWindowManager().getDefaultDisplay().getWidth(); windowheight = getWindowManager().getDefaultDisplay().getHeight(); System.out.println("width" +windowwidth); System.out.println("height" +windowheight); ima1 = (ImageView)findViewById(R.id.imageview1); ima1.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { layoutParams = (RelativeLayout.LayoutParams) ima1.getLayoutParams(); switch(event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); System.out.println("value of x" +x_cord); System.out.println("value of y" +y_cord); if (x_cord > windowwidth) { x_cord = windowwidth; } if (y_cord > windowheight) { y_cord = windowheight; } layoutParams.leftMargin = x_cord-25; layoutParams.topMargin = y_cord-25; // layoutParams.rightMargin = x_cord-25; // layoutParams.bottomMargin = y_cord-25; ima1.setLayoutParams(layoutParams); break; default: break; } return true; } }); ima2 = (ImageView)findViewById(R.id.imageview2); ima2.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { layoutParams = (RelativeLayout.LayoutParams) ima2.getLayoutParams(); switch(event.getActionMasked()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); System.out.println("value of x1" +x_cord); System.out.println("value of y1" +y_cord); if (x_cord > windowwidth) { x_cord = windowwidth; } if (y_cord > windowheight) { y_cord = windowheight; } layoutParams.leftMargin = x_cord - 25; layoutParams.topMargin = y_cord - 75; ima2.setLayoutParams(layoutParams); break; default: break; } return true; } }); } } 

main.xml

  <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/imageview1" android:src="@drawable/image1" /> <ImageView android:layout_width="100sp" android:layout_height="100sp" android:id="@+id/imageview2" android:src="@drawable/image2" /> </RelativeLayout> 

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड स्क्रीन पर छवियां खींचें और ड्रॉप करें?"

अपनी गतिविधि फ़ाइल में नीचे लिखें कोड

 windowwidth = getWindowManager().getDefaultDisplay().getWidth(); windowheight = getWindowManager().getDefaultDisplay().getHeight(); tv1 = (ImageView)findViewById(R.id.image); tv1.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { layoutParams1 = (RelativeLayout.LayoutParams) tv1.getLayoutParams(); switch(event.getActionMasked()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); if (x_cord > windowwidth) { x_cord = windowwidth; } if (y_cord > windowheight) { y_cord = windowheight; } layoutParams1.leftMargin = x_cord - 25; layoutParams1.topMargin = y_cord - 75; tv1.setLayoutParams(layoutParams1); break; default: break; } return true; } }); tv2 = (ImageView)findViewById(R.id.image1); tv2.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { layoutParams2 = (RelativeLayout.LayoutParams) tv2.getLayoutParams(); switch(event.getActionMasked()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); if (x_cord > windowwidth) { x_cord = windowwidth; } if (y_cord > windowheight) { y_cord = windowheight; } layoutParams2.leftMargin = x_cord - 25; layoutParams2.topMargin = y_cord - 75; tv2.setLayoutParams(layoutParams2); break; default: break; } return true; } }); 

एक्सएमएल फ़ाइल: –

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="50sp" android:layout_height="50sp" android:id="@+id/image" android:src="@drawable/image"> </ImageView> <ImageView android:layout_y="30dip" android:layout_x="118dip" android:layout_width="50sp" android:layout_height="50sp" android:id="@+id/image1" android:src="@drawable/image1"> </ImageView> </RelativeLayout> 

ऐसा इसलिए है क्योंकि आपने एक LinearLayout में सब कुछ डाल दिया है, जिसका अर्थ है कि आप उन वस्तुओं को नहीं रख सकते जहां आप चाहते हैं, वे हमेशा दूसरे के बाद एक होते हैं। आप इसके बजाय एक RelativeLayout का उपयोग करने का प्रयास कर सकते हैं। अगर यह पर्याप्त लचीला नहीं है, तो आपको Canvas को देखना चाहिए।

इसका कारण यह है कि: आपकी स्क्रीन अपलोड कार्रवाई बहुत धीमी गति से है I

सामान्य स्थिति में, कार्रवाई कदम बहुत बार-बार अपलोड हो रहा है, भले ही आपकी उंगली स्क्रीन पर न जाए। लेकिन कुछ फोन स्क्रीन इतनी संवेदनशील नहीं हैं

आप अपने फोन की सीमा को संशोधित कर सकते हैं इसे कर्नेल समर्थन की आवश्यकता है

रिलेटिव लेआउट और यादृच्छिक स्थानों में कई छवि दृश्यों को प्रबंधित करने के लिए मैंने आपके कोड को बारीक करने की स्वतंत्रता ली है इसके अलावा मैंने विंडो आकार प्राप्त करने का एक बेहतर तरीका जोड़ा है, क्योंकि Display.getHeight() को पदावनत किया गया है।

  if(Build.VERSION.SDK_INT >= 13){ android.graphics.Point p = new android.graphics.Point(); this.getWindowManager().getDefaultDisplay().getSize(p); width = px; height = py; } else{ Display display = getWindowManager().getDefaultDisplay(); width = display.getWidth(); height = display.getHeight(); } RelativeLayout rel = new RelativeLayout(this); rel.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); rel.setBackgroundResource(R.drawable.bg); pic = new ImageView[10]; layoutParams1 = new LayoutParams[10]; for(int i = 0; i < 10; i++){ pic[i] = new ImageView(this); pic[i].setImageResource(R.drawable.img); pic[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); pic[i].setAdjustViewBounds(true); pic[i].setScaleType(ScaleType.FIT_XY); pic[i].setMaxHeight(88); pic[i].setMaxWidth(100); pic[i].setMinimumHeight(88); pic[i].setMinimumWidth(100); pic[i].setTag(i); int x = rand.nextInt(width); while(x > width - 88){ x = rand.nextInt(width); } int y = rand.nextInt(height); while(y > height - 100){ y = rand.nextInt(height); } layoutParams1[i] = (RelativeLayout.LayoutParams) pic[i].getLayoutParams(); layoutParams1[i].leftMargin = x; layoutParams1[i].topMargin = y; pic[i].setLayoutParams(layoutParams1[i]); pic[i].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int index = Integer.valueOf(v.getTag().toString()); layoutParams1[index] = (RelativeLayout.LayoutParams) v.getLayoutParams(); switch(event.getActionMasked()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); if (x_cord > width) { x_cord = width; } if (y_cord > height) { y_cord = height; } layoutParams1[index].leftMargin = x_cord - 44; layoutParams1[index].topMargin = y_cord - 50; pic[index].setLayoutParams(layoutParams1[index]); break; default: break; } return true; } }); rel.addView(pic[i]); } setContentView(rel); 

दरअसल आप छवियों को प्रोग्राम के अनुसार घोषित करके इस समस्या से बच सकते हैं

 int id = getResources().getIdentifier("image1", "drawable", getPackageName()); ImageView imageView1 = new ImageView(this); LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); imageView1.setLayoutParams(vp); imageView1.setImageResource(id); someLinearLayout.addView(imageView1); int id = getResources().getIdentifier("image2", "drawable", getPackageName()); ImageView imageView2 = new ImageView(this); LinearLayout.LayoutParams vp1 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); imageView2.setLayoutParams(vp1); imageView2.setImageResource(id); someLinearLayout.addView(imageView2); 

और जोड़े गए छवि दृश्यों में स्पर्श ईवेंट जोड़ें