آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

omid93  12 سال پیش  11 سال پیش
+15 0

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

مثلا اگه سایز گوشی از 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();
}
+1 0
تا منظورتون از لایه چی باشه اگه همون ui هست که خود اندروید اینکار رو انجام میده (12 سال پیش)
0 0
س (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  12 سال پیش
+12 0

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

همونطور که ما برای منابع هنری ، پوشه هایی مثل 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 میدید  توی همه پوشه ها یکی باشه

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

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