আমি দর্শনের উপরের বাম কোণে পরম স্ক্রিন পিক্সেল স্থানাঙ্কগুলি পাওয়ার চেষ্টা করছি। যাইহোক, সমস্ত পদ্ধতি যেমন আমি খুঁজে পেতে পারি getLeft()
এবং getRight()
সেগুলি কাজ করে না কারণ সেগুলি সমস্ত মতামতের পিতামাতার সাথে সম্পর্কিত বলে মনে হয়, এইভাবে আমাকে দেয় 0
। এটি করার উপযুক্ত উপায় কী?
যদি এটি সহায়তা করে তবে এটি গেমটির জন্য 'চিত্রটিকে পিছনে রাখুন'। আমি চাই যে ব্যবহারকারী একাধিক টুকরা নির্বাচন করতে একটি বাক্স আঁকতে সক্ষম হবে। আমার ধারণাটি হ'ল এটি করার সবচেয়ে সহজ উপায় হ'ল getRawX()
এবং এর getRawY()
থেকে MotionEvent
এবং তারপরে সেই মানগুলি টুকরা ধারণ করে উপরের বাম কোণার সাথে তুলনা করুন। টুকরাগুলির আকার জেনে আমি কতগুলি টুকরো নির্বাচন করা হয়েছে তা নির্ধারণ করতে পারি। আমি বুঝতে পারছি আমি ব্যবহার করতে পারেন getX()
এবং getY()
উপর MotionEvent
, কিন্তু যে আয় একটি আপেক্ষিক অবস্থান নির্ণয় করা হয় যা টুকরা আরো কঠিন নির্বাচিত হয় যে হিসাবে। (অসম্ভব নয়, আমি জানি, তবে এটি অযথা জটিল বলে মনে হচ্ছে)।
সম্পাদনা করুন: হোল্ডিং ধারকটির আকার পাওয়ার জন্য আমি যে কোডটি ব্যবহার করার চেষ্টা করতাম, সেগুলির একটি প্রশ্নের উত্তর অনুসারে। TableLayout
সমস্ত ধাঁধা টুকরা ধারণ করে যা টেবিল।
TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
Log.d(LOG_TAG, "Values " + tableLayout.getTop() + tableLayout.getLeft());
সম্পাদনা 2: প্রস্তাবিত উত্তরগুলির আরও অনুসরণ করে এখানে আমি চেষ্টা করেছি কোড code
public int[] tableLayoutCorners = new int[2];
(...)
TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
tableLayout.requestLayout();
Rect corners = new Rect();
tableLayout.getLocalVisibleRect(corners);
Log.d(LOG_TAG, "Top left " + corners.top + ", " + corners.left + ", " + corners.right
+ ", " + corners.bottom);
cells[4].getLocationOnScreen(tableLayoutCorners);
Log.d(LOG_TAG, "Values " + tableLayoutCorners[0] + ", " + tableLayoutCorners[1]);
সমস্ত সূচনা সম্পন্ন হওয়ার পরে এই কোডটি যুক্ত করা হয়েছিল। চিত্রটি ক এর মধ্যে থাকা ইমেজভিউজের একটি কক্ষে (ঘর [] অ্যারে) বিভক্ত হয়েছে TableLayout
। সেলগুলি [0] শীর্ষে বাম ImageView
, এবং আমি কোষগুলি বেছে নিয়েছি [4] কারণ এটি মাঝখানে কোথাও রয়েছে এবং খুব অবশ্যই (0,0) এর স্থানাঙ্ক থাকা উচিত নয়।
উপরে প্রদর্শিত কোডটি এখনও আমাকে লগগুলিতে সমস্ত 0s দেয় যা আমি সত্যিই বুঝতে পারি না কারণ বিভিন্ন ধাঁধার টুকরা সঠিকভাবে প্রদর্শিত হয়েছে। (আমি টেবিল লেআউটকর্ণার্স এবং ডিফল্ট দৃশ্যমানতার জন্য সর্বজনীন চেষ্টা করেছি, উভয়ই একই ফল দিচ্ছি))
আমি জানি না এটি তাত্পর্যপূর্ণ কিনা, তবে ImageView
গুলি মূলত একটি আকার দেওয়া হয় না। এর আকার আকার ImageView
নির্ধারণ করা হয় স্বয়ংক্রিয়ভাবে প্রদর্শনের মাধ্যমে যখন আমি এটিকে প্রদর্শন করার জন্য একটি চিত্র দেই। লগিং কোডটি তাদের একটি চিত্র দেওয়ার পরে এবং স্বয়ংক্রিয়ভাবে নিজেকে পুনরায় আকার দেওয়ার পরেও এটি কি তাদের মান 0 হওয়ার ক্ষেত্রে অবদান রাখতে পারে? সম্ভাব্যরূপে এর মোকাবিলা করতে, আমি tableLayout.requestLayout()
উপরে বর্ণিত কোডটি যুক্ত করেছি , তবে তাতে কোনও লাভ হয়নি।