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

تنظیم اندازه فونت برای صفحه نمایش های مختلف...

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

سلام.کسی میدونه میشه کاری کرد که وقتی برنامه نصب شد روی گوشی کاربر، باتوجه به اندازه ی صفحه نمایشش فونتی با سایزی که ما از قبل تعیین کردیم رو نمایش بده؟

منظورم اینه که کدی هست که توی برنامه مون بنویسیم که اگر کاربر صفحه نمایشش کوچیک بود، فونت رو باسایز مثلا 14 نمایش بده و اگر متوسط بود، فونت برنامه رو با سایز 16 و... همینطور تا آخر؟همچین کدی هست؟

نظرات

hoseinnrz 11 سال پیش
معمولا از واحد ها استفاده می کنن واحد هایی که مستقل از پیکسل کار می کنند ، مثلا 21sp اگه صفحه نمایشت کوچیک باشه این فونت کوچیک نمایش داده میشه ، اگه بزرگ باشه که بزرگتر نمایش داده میشه ، در واقع متناسب با اون صفحه نمایش داده میشه ، نه خیلی بزرگتر و نه خیلی کوچکتر
hamed 11 سال پیش
البته این حالت یک ایراد هم دارد و اون اینه که وقتی تنظیمات مربوط به کم بینایان روی گوشی فعال بشه ابعاد شما به هم می ریزن و ممکن برنامه درست نشون داده نشه.
b.fat 11 سال پیش
اتفاقا مزیت بزرگش همینه. برنامه قراره برای کاربر کار بکنه، نه برای خودش
حامی 11 سال پیش
سلام به همگی.ممنونم بخاطر اینکه نظر دادین اما من درباره ی کدش سوال کردم نه مزیت و معایبش.میخوام ببینم که هست همچین کدی که شرط بزارم توی اکتیویتی خودم و بگم اگر صفحه نمایش کاربر کوچک بود، فلان سایز رو برای فونت انتخاب کن و به کاربر نشون بده و اگر متوسط بود فلان سایز و اگر بزرگ بود سایز دیگه.کدش رو میخوام . هست؟

پاسخ‌ها 2

Hossein Kurd 11 سال پیش

من از این کد برای به دست آوردن ابعاد صفحه ، سایز صفحه نمایش و تعیین اندازه فونت استفاده می کنم:

            screen_density = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);
            UIHelpers.screenDensity = screen_density;
            Log.i(G.logs.Screen, "SCREEN DENSITY: " + screen_density);

            switch (screen_density) {
                case 1:
                    Log.i(G.logs.Screen, "Screen Density Is Small >> " + screen_density);
                    UIHelpers.textFont = 11;
                    UIHelpers.titleFont = 13;
                    break;
                case 2:
                    Log.i(G.logs.Screen, "Screen Density Is Normal >> " + screen_density);
                    UIHelpers.textFont = 12;
                    UIHelpers.titleFont = 14;
                    break;
                case 3:
                    Log.i(G.logs.Screen, "Screen Density Is Large >> " + screen_density);
                    UIHelpers.textFont = 16;
                    UIHelpers.titleFont = 19;
                    break;
                case 4:
                    Log.i(G.logs.Screen, "Screen Density Is XLarge >> " + screen_density);
                    UIHelpers.textFont = 19;
                    UIHelpers.titleFont = 22;
                    break;
                default:
                    Log.i(G.logs.Screen, "Screen Density Is UnDefined >> " + screen_density);
                    UIHelpers.textFont = 22;
                    UIHelpers.titleFont = 25;
                    break;
            }

            Log.i(G.logs.Screen, "UIHelpers.textFont >> " + UIHelpers.textFont);

            int currentAPIVersion = android.os.Build.VERSION.SDK_INT;
            Log.i(G.logs.Screen, "Current API Version: " + currentAPIVersion);

            DisplayMetrics metrics = UIHelpers.getScreenSize();
            width = metrics.widthPixels;
            height = metrics.heightPixels;

            UIHelpers.width = width;
            UIHelpers.height = height;

و محتوای کلاس UIHelpers :

public class UIHelpers {
    public static int titleFont,textFont,DescFont;
    public static int width, height;
    public static int screenDensity;

    public static DisplayMetrics getScreenSize(){
        return G.appConfigs.context.getResources().getDisplayMetrics();
    }
}

البته با تشکر از مهندس حسین زاده که برای اولین بار  ایشون این کدها رو در اختیارم گذاشتن

نظرات

doost_fu 11 سال پیش
این دستور توی پیدا کردن سایز صفحه به اینچ چقدر دقت داره ؟ و این G.appConfigs داخل کلاس G به چه صورت تعریف شده ؟ اگه امکان داره کلاس G هم بزارید ممنون
Hossein Kurd 11 سال پیش

من چند کلاس داره

مثلا LOGS

که توی اون چند فیلد final String با نام های مختلف دارم

توی کلاس G تعریف می کنم :

publc static LOGS logs = new LOGS();

محتوای LOGS :

public class Logs {
    public String Public = "Log";
    public String Info = "LogInfo";
    public String Test = "LogTest";
    public String Error = "LogError";
    public String GcmError = "LogGcmError";
    public String GcmInfo = "LogGcmInfo";
    public String JSON = "LogJson";
    public String WebService = "LogWS";
    public String DL = "LogDL";
    public String DB = "LogDB";
    public String Dir = "LogDir";
    public String Screen = "LogSCR";
    public String Switch = "LogSwitch";
}

نظرات

nooriDeveloper 11 سال پیش
من از sp برای تغییر اندازه فونت استفاده کردم ولی تو تبلت و گوشی اندازه ها هیچ تغییری نکرد. تو تبلت خیلی کوچیک معلوم میشه، تو گوشی بزرگ

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