一些Android开发实用的方法

jopen 11年前

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);      }

2、  判断是否是平板(官方用法)

public static boolean isTablet(Context context) {          return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;      }

3、  文字根据状态更改颜色 android:textColor(放在res/color/目录下)

<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>

 4、背景色根据状态更改颜色 android:backgroup(如果直接给背景色color会报错)

<selector xmlns:android="http://schemas.android.com/apk/res/android">        <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>              <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />          </shape></item>      <item android:state_pressed="true"><shape>              <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />          </shape></item>      <item><shape>              <gradient android:angle="0" android:centerColor="#00ff00" android:endColor="00ff00" android:startColor="00ff00" />          </shape></item>    </selector>

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);      }