天天看點

Android實用代碼七段(一)

1、 精确擷取螢幕尺寸(例如:3.5、4.0、5.0寸螢幕) 

    public static double getScreenPhysicalSize(Activity ctx) {

        DisplayMetrics dm = new DisplayMetrics();

        ctx.getWindowManager().getDefaultDisplay().getMetrics(dm);

        double diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2));

        return diagonalPixels / (160 * dm.density);

    }

  一般是7寸以上是平闆

2、 判斷是否是平闆(官方用法)

    public static boolean isTablet(Context context) {

        return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;

3、 文字根據狀态更改顔色 android:textColor 

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="#53c1bd" android:state_selected="true"/>

    <item android:color="#53c1bd" android:state_focused="true"/>

    <item android:color="#53c1bd" android:state_pressed="true"/>

    <item android:color="#777777"/>

</selector>

   放在res/color/目錄下

4、背景色根據狀态更改顔色 android:backgroup

    <item android:state_selected="true"><shape>

            <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />

        </shape></item>

    <item android:state_focused="true"><shape>

    <item android:state_pressed="true"><shape>

    <item><shape>

            <gradient android:angle="0" android:centerColor="#00ff00" android:endColor="00ff00" android:startColor="00ff00" />

  如果直接給背景色color會報錯。

5、 啟動APK的預設Activity

    public static void startApkActivity(final Context ctx, String packageName) {

        PackageManager pm = ctx.getPackageManager();

        PackageInfo pi;

        try {

            pi = pm.getPackageInfo(packageName, 0);

            Intent intent = new Intent(Intent.ACTION_MAIN, null);

            intent.addCategory(Intent.CATEGORY_LAUNCHER);

            intent.setPackage(pi.packageName);

            List<ResolveInfo> apps = pm.queryIntentActivities(intent, 0);

            ResolveInfo ri = apps.iterator().next();

            if (ri != null) {

                String className = ri.activityInfo.name;

                intent.setComponent(new ComponentName(packageName, className));

                ctx.startActivity(intent);

            }

        } catch (NameNotFoundException e) {

            Log.e("startActivity", e);

        }

7、計算字寬

    public static float GetTextWidth(String text, float Size) {

        TextPaint FontPaint = new TextPaint();

        FontPaint.setTextSize(Size);

        return FontPaint.measureText(text);

   注意如果設定了textStyle,還需要進一步設定TextPaint。 

繼續閱讀