بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

طراحی چند لایه برای یک اکتیویتی

مدیریت گفتگو
omid93 12 سال پیش
آخرین تغییر: 12 سال پیش

نظرتون درباره این چیه

مثلا اگه سایز گوشی از 7 پایین تر بود  یک لایه رو  نشون بده و اگه برابر یا بزرگ تر از 7 بود لایه دیگه رو نشون بده

اول سایز گوشی رو میگیریم بعد میگیم کدوم رو نشون بده

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

DisplayMetrics dm1 = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm1);
double x = Math.pow(dm1.widthPixels / dm1.xdpi, 2);
double y = Math.pow(dm1.heightPixels / dm1.ydpi, 2);
double screenInches = Math.sqrt(x = y);

if (screenInches < 7) {
setContentView(R.layout.smartphone);
Toast.makeText(getApplicationContext(), "sc < 7", Toast.LENGTH_LONG).show();
} else {
setContentView(R.layout.tablet);
Toast.makeText(getApplicationContext(), "sc > 7", Toast.LENGTH_LONG).show();
}

نظرات

طاهر 12 سال پیش
تا منظورتون از لایه چی باشه اگه همون ui هست که خود اندروید اینکار رو انجام میده

پاسخ‌ها 1

sadeghbarout 12 سال پیش

خود اندروید این قابلیت رو پیشبینی کرده

همونطور که ما برای منابع هنری ، پوشه هایی مثل xhdpi , hdpi , mdpi , ldpi داریم برای UI ها هم مشابه این پوشه ها رو میتونیم موازی با همون پوشه layout با نام های زیر درست کنیم:

layout-xlarge

layout-large

layout-small

و یا اگه اشتباه نکنم مثلا برای صفحات بالای 720dp  (فکر کنم بالای 10 اینچ ) یه همچین پوشه ای:

layout-sw720dp

و برای عرض 600dp (بالای 7 اینچ) :

layout-sw600dp

جالبه که حتی میتونید حالت landscape هم توش جداگانه طراحی کنید مثلا پوشه زیر برای سایز صفحه xlarge و حالت landscape ه :

layout-xlarge-land


 همچنین شما میتونید برای مقادیر پوشه value هم همین کارو کنید مثلا:

values-sw600dp     

values-sw720dp

 


فقط دقت کنید که اسم فایلهای xml و id عناصری که توی کد هاتون بهشون refrence میدید  توی همه پوشه ها یکی باشه

نظرات

OmidAhmadian 12 سال پیش
اینم به توضیحات بالا اضافه کنید که id عناصر توی همه ی ui هایی که برای سایز های مختلف می سازید باید یکسان باشه.
sadeghbarout 12 سال پیش
بله درسته . اضاف شد :)
PandaStudio 12 سال پیش
فقط یه نکته اینکه اگه توی ui های مختلف عناصر مختلفی داری نیازی نیست idهای برابری داشته باشه
sadeghbarout 12 سال پیش
بله نیازی نیست همه عناصر id های برابری داشته باشن . همونطور که نوشتم فقط عناصری که توی کدها بهشون refrence خورده باید id یکسان داشته باشن . چون واضحه که اگه اون id موجود نباشه کرش رخ میده
MiRHaDi 12 سال پیش
تو value ما میتونیم برای زبانهای مختلف strings مختلف تعریف کنیم. قاعدتا باید بشه Layout مختلف هم تعریف کرد. حالا ترکیب سایز و زبان را چجوری نشون بدیم ؟
sadeghbarout 12 سال پیش
قاعدتا نداره! خب بالا همینو توضیح دادم که میشه layout های مختلف تعریف کرد. درمورد ترکیبشون هم نکته خاصی نداره دیگه! توی همه لایه هات مثلا برای header از یه استرینگ توی value استفاده میکنی بعد میری برای زبان های مختلف هم اون value رو تعریف میکنی. خودش وقتی گوشی کاربر مثلا ر. فارسی باشه متن فارسی رو انتخاب میکنه برای اون header

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