انجمن سایت کلیدستان



بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۲۱، ۰۶:۵۵ ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: Americanboy
آخرین ارسال: Americanboy
پاسخ 9
بازدید 2901

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#1
سلام به همه دوستان عزیز
من برنامم رو ساختم اما یه مشکلی داره
برای هر اندازه larg , xlarge , small فایل xml مربوط به خودش رو ایجاد کردم و واردش شدم و طبق اون سایزز تنظیم کردم محل قرار گیری ویجت ها رو و تو نرم افزار همه چیز رو مرتب نشون میده.... اما وقتی خروجی میگیرم و توی شبیه ساز اجرا میکنم ( شبیه سازم blue stacks هست) تو اندازه های مختلف که تستش میکنم ویجت ها نا مرتب هستند... کلید شماره 239 رو هم خوندم عزیزان اما بازهم مشکلم حل نشد،و درضمن تو یه تاپیک خارجی هم گفته بود باید تو فایل مانیفست هم اندازه های مختلف رو وارد کنی و من هم این کار رو هم انجام دادم اما بازهم مشکلم حل نشد...
دوستان لطفا یه راهنمایی کنید واقعا خیلی برام عجیب شده توی نرم افزار همه چیز توی هر اندازه سر جای خودش هست اما وقتی خروجی میگیرم و توی شبیه ساز blue stacks که اجرا میکنم تو هر اندازه ای که تست می کنم ویجت ها سر جاشون نیستند.... لطفا کمکم کنید دوستان.
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#2
سلام.
برای تعیین اندازه عناصر موجود در صفحه، از واحدهای dp و sp استفاده نمایید (این واحدها، مستقل از اندازه صفحه نمایش می باشند)(البته اگر قبلا واحد پیکسل را به کار برده اید). تفاوت آن دو را در کلید زیر شرح داده ایم :

کلید شماره 337

علاوه بر این، دقت در چگونگی چیدن عنصرها (چگونگی تعریف مشخصه های آنها و همچنین موقعیت آنها نسبت به هم) نیز تاثیرگذار خواهد بود.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#3
(۱۳۹۳/۱۱/۰۶, ۱۲:۴۳ ق.ظ)'admin' نوشته: سلام.
برای تعیین اندازه عناصر موجود در صفحه، از واحدهای dp و sp استفاده نمایید (این واحدها، مستقل از اندازه صفحه نمایش می باشند)(البته اگر قبلا واحد پیکسل را به کار برده اید). تفاوت آن دو را در کلید زیر شرح داده ایم :

کلید شماره 337

علاوه بر این، دقت در چگونگی چیدن عنصرها (چگونگی تعریف مشخصه های آنها و همچنین موقعیت آنها نسبت به هم) نیز تاثیرگذار خواهد بود.



 

بی نهایت ممنونم مدیر محترم
البته من از واحد dp برای ویجت هام استفاده کردم و تمام وابستگی های اونا روهم false کردم و مشکلم حل شد،چون نمیدونستم دقیقا هر وابستگی چه کاری رو انجام میده برای همون به مشکل برخورده بودم و برنامم به هم میریخت،فقط یه سوالی مدیر عزیز :
اینکه من وابستگی ویجت ها رو غیر فعال کردم و از مارگین margin برای تعیین موقعیت ویجت هام استفاده کردم،به نظر شما به مشکلی بر نمیخورم؟

 
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#4
مشخصه margin (در واقع منظورم layout_margin و 4 مشخصه دیگر هم کاربرد با آن است) برای تعیین میزان حاشیه گرفتن از سایر بخش ها می باشد و اگر واحد آن را برابر dp قرار بدهیم، تاثیر خاصی در به هم ریختگی عناصر نخواهد داشت. 
اگر کدهای فایل xml رو قرار بدهید، شاید بهتر بتونم به سوالتون پاسخ بدهم.


 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#5
ممنونم مدیر عزیز،راستش الان چک کردم اما هنوز مشکل داره یعنی تو هر چهار حالت -small- large - xlarge و layout درست هست اما وقتی با پیش فرض های ایکلیپس چک میکنم باز به هم ریخته است،یعنی با گوشی های مدل نکسوز گوگل بیشتر این مورد مشهود هست و تمام ویجت ها سر جای خودشون نیستند،راستش من برای قرار دادن و تعیین موقعیت ویجت هام مارگین margin بهشون دادم مثلا مارگین ویجت دکمه back رو دادم 300  left و 700 top و بقیه خاصیت ها رو false کردم،لطفا کمکم کنید مدیر عزیز،من برنامم رو ساختم و تکمیل کردم هیچ باگی هم نداره اما از این قضیه اندازه های مختلف قافل موندم این کد یکی از فایل های xml من هست که وقتی برای دستگاه های موبایل با اندازه های مختلف چک می کنم تو هرکدوم ویجت هام سر جای خودشون نیستند:

البته استاد java برای شکستن متن رو تو ابزارتون پیدا نکردم و مجبور شدم کپی پیست کنم شرمنده :

کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/easyexplod"
        android:layout_width="480dp"
        android:layout_height="800dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="true"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:background="@drawable/room" />
    
    <ImageButton
        android:id="@+id/imagebeasyreplay"
        android:layout_width="110dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="130dp"
        android:background="@drawable/replay" />

    <ImageButton
        android:id="@+id/imageBeasyback"
        android:layout_width="110dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginLeft="170dp"
        android:layout_marginTop="130dp"
        android:background="@drawable/back" />

    <ImageView
        android:id="@+id/professsakoo"
        android:layout_width="480dp"
        android:layout_height="800dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginTop="305dp"
        android:background="@drawable/sakoo"
        android:scaleType="centerCrop" />
    
    <ImageButton
        android:id="@+id/imageBeasydownback"
        android:layout_width="110dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="180dp"
        android:layout_marginTop="400dp"
        android:background="@drawable/back" />

    <ImageView
        android:id="@+id/professbomb"
        android:layout_width="480dp"
        android:layout_height="140dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginTop="190dp"
        android:background="@drawable/bomb" />

    <ImageButton
        android:id="@+id/imageBanborright"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginLeft="212dp"
        android:layout_marginTop="250dp"
        android:background="@drawable/anbor" />

    <ImageButton
        android:id="@+id/imageBanborleft"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentEnd="false"
        android:layout_alignParentLeft="false"
        android:layout_alignParentRight="false"
        android:layout_alignParentStart="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_centerHorizontal="false"
        android:layout_centerInParent="false"
        android:layout_centerVertical="false"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="250dp"
        android:background="@drawable/anbor2" />

    

</RelativeLayout> 
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#6
نیازی نیست که آن مشخصه ها را برابر false قرار بدهید و وقتی نمی خواهید از آنها (منظورم layout_align ها می باشد) استفاده کنید، آنها را از لیست مشخصه های تعیین شده برای عنصر، حذف کنید (البته نه اینکه هر مشخصه ای که false بود را حذف کنیم، بلکه منظورم تنها مشخصه های تعیین موقعیت عناصر نسبت به هم است)(حذف کنید و نتیجه را با حالت قبل مقایسه نمایید). مثلا در تگ Imageview اول، کدهای زیر را ببینید :

کد پی‌اچ‌پی:
android:layout_alignParentBottom="false"
android:layout_alignParentEnd="false"
android:layout_alignParentLeft="false"
android:layout_alignParentRight="false"
android:layout_alignParentStart="false"
android:layout_alignParentTop="true"
android:layout_alignWithParentIfMissing="false"
android:layout_centerHorizontal="false"
android:layout_centerInParent="false" 

آن را به کد زیر تبدیل کنید (و ببینید که در نتیجه تاثیری دارد یا خیر) :

کد پی‌اچ‌پی:
android:layout_alignParentTop="true" 

با ننوشتن مشخصه های غیر مفید، کدها خواناتر می شوند و تغییر دادن آنها راحتتر می شود.
البته بنده کمتر با RelativeLayout کار کردم ولی تا حالا نیاز پیدا نکرده بودم که اینگونه مشخصه ها را تعیین کنم. اگر منبع خاصی اینگونه کدنویسی را توصیه کرده، آن را ذکر کنید تا بنده و سایر دوستان که کمتر با RelativeLayout کار کردیم نیز مطلع شویم.
اگر قصد دارید که عنصرها به ترتیب چیده شوند، می توانید RelativeLayout را به LinearLayout تبدیل کنید. در این حالت، عنصرها می توانند به صورت عمودی یا افقی، در کنار هم چیده شوند و برای ساختارهای پیچیده هم می توان از TableLayout (کلید شماره 2775) استفاده کرد.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#7
بی نهایت سپازگزارم مدیر محترم
راستش من با ایکلیپس این بازی رو ساختم و عزیزی به من گفت اگه میخوای ویجت هات آزاد تر باشند باید از relative استفاده کنی چون بازی من یه مبازی تقریبا فکری هست برای همین از این حالت استفاده کردم،البته مشکل اصلی من در این هست که مثلا در تبلت دکمه back من پائین قرار داره اما در یه گوشی با اندازه نزدیک به تبلت این دکمه back تقریبا فاصله زیادی از پائین داره و نکته قابل توجه این هست که هر دوی اینها از فایل xml موجود در پوشه layout-xlarge استفاده می کنند و وقتی یکی از این اندازه ها رو دستکاری میکنی اندازه مشابه هم به هم میریزه...لطفا اگه میتونید بهم کمک کنید،آخه حالت linearlayout من رو آزاد نمیزاره تو چیدن ویجت هام،یعنی به نظر شما اگه حالت شرو عوض کنم درست میشه مشکل اندازه هام؟
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#8
نیازی نیست که حتما از LinearLayout  استفاده شود (اگر ساختارتان با Relativelayout به خوبی چیده شده باشد).
در واقع، این مشکل برای هر دو نوع لایه وجود دارد و به این دلیل است که حتی گوشی هایی که در یک دسته قرار می گیرند (هر فایل xml برای یک دسته از گوشی ها، می باشد، یعنی از نظر اندازه صفحه نمایش)، باز هم از نظر اندازه متفاوت هستند و ساخت چندین فایل xml ، باعث می شود که در گوشی های مختلف، خروجی خیلی متفاوت نباشد، اما خروجی، به طور دقیق، یکسان نمی شود.
خود بنده با موردی سر و کار داشتم که خیلی برایم اهمیت داشت که خروجی در گوشی های مختلف، یکسان باشد (به طور دقیق). بنابراین با کدنویسی، ابتدا اندازه طول و عرض صفحه نمایش را بر حسب پیکسل به دست آوردم (کلید شماره 2894) و سپس اندازه عناصر گرافیکی را به صورت درصدی از آنها محاسبه نموده و تعیین می کردم (بر حسب پیکسل).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

بهم ریختن وجت ها بعد از گرفتن خروجی (در برنامه نویسی اندروید)

#9
یک دنیا ممنونم از کمکتون
به نظرم روشی که عرض کردید کمی سخت میاد به نظر اما بهتر از به هم ریختن ویجت هست.
موفق و شاد باشید مدیر محترم.
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)