אי התאמה בין קורדינטות

פורום המפתחים ך- Android SDK. שאלות, רעיונות ונושאים אחרים.

מנהל: מנהלי פורומים

אי התאמה בין קורדינטות

הודעהעל ידי SuTinyoR ב א', 29 ינואר 2012, 21:47

היי,
אני חדש פה, וממש לא מזמן התחלתי ללמוד פיתוח לאנדרואיד.

ניתקלתי בבעיה, שאני לא מצליח לפתור כמה ימים אפילו בעזרת ידידינו גוגל.

אני בניתי משהו פשוט, כדי להתנסות:
כדור (עיגול מצוייר) על המסך, שאתה יכול להזיז אותו בעזרת האצבע.
הבעיה היא שכדי להזיז את הכדור בפועל, אני צריך לגעת במסך טיפה מעל הכדור, והכדור, כשהוא זז בעקבות האצבע, נשאר תמיד טיפה מתחת לאצבע. (אני יודע שזה טיפה מסובך, אני לא טוב בלהסביר).

ממה שהבנתי מכל מיני אתרים, אני לא לקחתי בחשבון את ה- Status Bar שלוקח מספר פיקסלים במסך.
ניסיתי למצוא בגוגל איך אני מוציא את גובה ה - Status Bar אבל כל קוד שמצאתי, פשוט לא עבד. אני עדיין צריך "לתפוס" את הכדור טיפה מעליו.

אין לי מושג כבר איך ומה לחפש, מבקש את עזרתכם! :)
תודה מראש!
SuTinyoR
 
הודעות: 3
הצטרף: א', 29 ינואר 2012, 21:37

מכשיר: Samsung Galaxy S I 9000
גירסא:

Re: אי התאמה בין קורדינטות

הודעהעל ידי probe ב א', 29 ינואר 2012, 22:14

probe
 
הודעות: 1986
הצטרף: א', 16 מאי 2010, 17:11
מיקום: ישראל

מכשיר: HTC Desire
גירסא: 2.3

Re: אי התאמה בין קורדינטות

הודעהעל ידי gilgil ב א', 29 ינואר 2012, 23:24

כי אתה לא מצייר את הכדור מהאמצע
אתה מצייר אותו מהפינה השמאלית

אז תחשוב שאתה נוגע במסך הוא יצוייר איפה שהאצבע שלך ימינה ולמטה
אתה צריך להוסיף לו offset של מינוס חצי מרוחב הכדור שמאלה
ומינוס חצי אורך הכדור למעלה :)
צריך להסתכל רק קדימה %#!

האפליקציות שלי
תמונה
Swipers
https://play.google.com/store/apps/deta ... ps.swipers
סמל אישי של המשתמש
gilgil
 
הודעות: 1597
הצטרף: ו', 03 ספטמבר 2010, 16:56

מכשיר: אחר
גירסא: 4.0

Re: אי התאמה בין קורדינטות

הודעהעל ידי nadavfima ב ב', 30 ינואר 2012, 02:33

gilgil כתב:כי אתה לא מצייר את הכדור מהאמצע
אתה מצייר אותו מהפינה השמאלית

אז תחשוב שאתה נוגע במסך הוא יצוייר איפה שהאצבע שלך ימינה ולמטה
אתה צריך להוסיף לו offset של מינוס חצי מרוחב הכדור שמאלה
ומינוס חצי אורך הכדור למעלה :)


what he said. :)
nadavfima
 
הודעות: 254
הצטרף: ה', 02 דצמבר 2010, 01:25

מכשיר: Galaxy Nexus
גירסא: 4.0

Re: אי התאמה בין קורדינטות

הודעהעל ידי SuTinyoR ב ג', 31 ינואר 2012, 15:39

probe כתב:http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android


קראתי את הנושא הזה כבר, כמו שאמרתי, חיפשתי בגוגל, אבל זה לא עוזר. פשוט שום דבר לא קורה כשאני מוסיף את הגובה לקורדינטת ה-Y.

gilgil כתב:כי אתה לא מצייר את הכדור מהאמצע
אתה מצייר אותו מהפינה השמאלית

אז תחשוב שאתה נוגע במסך הוא יצוייר איפה שהאצבע שלך ימינה ולמטה
אתה צריך להוסיף לו offset של מינוס חצי מרוחב הכדור שמאלה
ומינוס חצי אורך הכדור למעלה :)


אני לא חושב שזאת הבעיה, כי אם כן, אז הייתי צריך להתחיל להזיז את הכדור קצת מעליו וקצת שמאלה, אבל זה לא המקרה, אני צריך להזיז אותו בדיוק מעליו...


עדכון:
כרגע עליתי על איזה משהו, אבל מסיבה מוזרה זה עובד טוב רק ב - OnTouchEvent.
קוד: בחר הכל
getWindow().getWindowManager().getDefaultDisplay().getHeight() - mainView.getBottom()


זה נתן לי את הערך 76, הערך שאני צריך. אני מפחית מה-Y של המסך את הערך ומקבל את ה-Y שאני צריך כדי שהוא יהיה תואם לכדור. הבעיה עכשיו שזה עובד לי רק מה - OnTouchEvent. ב- OnCreate או ב - OnStart זה לא עובד.
עזרה? :(
SuTinyoR
 
הודעות: 3
הצטרף: א', 29 ינואר 2012, 21:37

מכשיר: Samsung Galaxy S I 9000
גירסא:

Re: אי התאמה בין קורדינטות

הודעהעל ידי spenser ב ד', 01 פברואר 2012, 21:59

תבדוק ב-onCreate() מה הערכים שמוחזרים לך מכאן:
getWindow().getWindowManager().getDefaultDisplay().getHeight()
mainView.getBottom()

יש מצב שפשוט הם עוד לא אותחלו בערכים שאתה מצפה מהם
spenser
 
הודעות: 32
הצטרף: ב', 05 ספטמבר 2011, 19:56

מכשיר: Samsung Galaxy s2
גירסא:

Re: אי התאמה בין קורדינטות

הודעהעל ידי SuTinyoR ב ד', 01 פברואר 2012, 22:02

בדקתי, הם אכן לא אותחלו.
ה - mainView מחזיר 0 ב - getBottom().

אז אם לא ב - OnCreate, איפה אני יכול לרשום את השורה כדי שזה יעבוד??
SuTinyoR
 
הודעות: 3
הצטרף: א', 29 ינואר 2012, 21:37

מכשיר: Samsung Galaxy S I 9000
גירסא:


חזור אל פורום מפתחים