Android有用代码大全-Android-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝29
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:273回复:0

  Android有用代码大全

楼主#
更多 发布于:2016-05-31 16:31

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

放在res/color/目录下

4、背景色依据状况更改颜色 android:backgroup

假如直接给背景色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);Listapps =

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

6、核算字宽

public static float GetTextWidth(String text,

float Size) {     TextPaint FontPaint = new TextPaint();    

FontPaint.setTextSize(Size);     return FontPaint.measureText(text);}

留意假如设置了textStyle,还需求进一步设置TextPaint。

7、获取应用程序下一切Activity

public static

ArrayListgetActivities(Context ctx) {      ArrayListresult = new

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

     intent.setPackage(ctx.getPackageName());      for (ResolveInfo info :

ctx.getPackageManager().queryIntentActivities(intent, 0)) {          

result.add(info.activityInfo.name);      }      return

result;}

8、检查字符串中是不是包括汉字

public static boolean checkChinese(String

sequence) {     final String format = "[\\u4E00-\\u9FA5\\uF900-\\uFA2D]";    

boolean result = false;     Pattern pattern = Pattern.compile(format);    

Matcher matcher = pattern.matcher(sequence);     result = matcher.find();    

return result;}

9、检查字符串中只能包括:中文、数字、下划线(_)、横线(-)

public static boolean checkNickname(String

sequence) {     final String format = "[^\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w-_]";

    Pattern pattern = Pattern.compile(format);     Matcher matcher =

pattern.matcher(sequence);     return !matcher.find();}

10、检查有没有应用程序来承受处理你宣布的intent

public static boolean isIntentAvailable(Context

context, String action) {        final PackageManager packageManager =

context.getPackageManager();        final Intent intent = new Intent(action);  

     Listlist = packageManager.queryIntentActivities(intent,

PackageManager.MATCH_DEFAULT_ONLY);        return list.size();  

 }

11、运用TransitionDrawable完成图像显现的时分有突变作用

private void setImageBitmap(ImageView imageView,

Bitmap bitmap) {      // Use TransitionDrawable to fade in.      final

TransitionDrawable td = new TransitionDrawable(new Drawable[] { new

ColorDrawable(android.R.color.transparent), new

BitmapDrawable(mContext.getResources(), bitmap) });      //noinspection

deprecation      imageView.setBackgroundDrawable(imageView.getDrawable());    

 imageView.setImageDrawable(td);      td.startTransition(200);}

比运用AlphaAnimation作用要好,可防止出现闪耀疑问。

12、 扫描指定的文件

sendBroadcast(new

Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));

用处:从本软件新增、修改、删去图像、文件某一个文件(音频、视频)需求更新体系媒体库时运用,不用扫描全部SD卡。

13、Dip转px

public static int dipToPX(final Context ctx, float

dip) {      return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,

dip, ctx.getResources().getDisplayMetrics()); }

用处:难免在Activity代码中设置方位、大小等,本办法就很有用了!

14、获取现已装置APK(列表)的途径

PackageManager pm = getPackageManager();for

(ApplicationInfo app : pm.getInstalledApplications(0)) {    

 Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " +

app.sourceDir);}

输出:

package: com.tmobile.thememanager, sourceDir:

/system/app/ThemeManager.apkpackage: com.touchtype.swiftkey, sourceDir:

/data/app/com.touchtype.swiftkey-1.apk

15、 多进程Preferences数据同享

public static void putStringProcess(Context ctx,

String key, String value) {     SharedPreferences sharedPreferences =

ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS);    

Editor editor = sharedPreferences.edit();     editor.putString(key, value);    

editor.commit();}public static String getStringProcess(Context ctx, String key,

String defValue) {     SharedPreferences sharedPreferences =

ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS);    

return sharedPreferences.getString(key, defValue);}

16、泛型ArrayList转数组

@SuppressWarnings("unchecked")public staticT[]

toArray(Class cls, ArrayListitems) {     if (items == null || items.size()

== 0) {          return (T[]) Array.newInstance(cls, 0);     }     return

items.toArray((T[]) Array.newInstance(cls, items.size()));}

17、 保留恢复ListView当前方位

private void saveCurrentPosition() {      if

(mListView != null) {            int position =

mListView.getFirstVisiblePosition();            View v =

mListView.getChildAt(0);            int top = (v == null) ? 0 : v.getTop();    

       //保留position和top       }}private void restorePosition() {       if

(mFolder != null && mListView != null) {             int position =

0;//取出保留的数据             int top = 0;//取出保留的数据            

mListView.setSelectionFromTop(position, top);       }}

18、调用 便携式热门和数据同享 设置

public static Intent getHotspotSetting() {    

Intent intent = new Intent();     intent.setAction(Intent.ACTION_MAIN);    

ComponentName com = new ComponentName("com.android.settings",

"com.android.settings.TetherSettings");     intent.setComponent(com);     return

intent;}

19、 格式化输出IP地址

public static String getIp(Context ctx) {    

return Formatter.formatIpAddress((WifiManager)

ctx.getSystemService(Context.WIFI_SERVICE).getConnectionInfo().getIpAddress());}

20、 ip地址转成8位十六进制串

/** ip转16进制 */public static String ipToHex(String

ips) {     StringBuffer result = new StringBuffer();     if (ips != null) {    

     StringTokenizer st = new StringTokenizer(ips, ".");          while

(st.hasMoreTokens()) {                String token =

Integer.toHexString(Integer.parseInt(st.nextToken()));                if

(token.length() == 1)                      token = "0" + token;              

 result.append(token);          }     }     return result.toString();}/**

16进制转ip */public static String texToIp(String ips) {     try {        

 StringBuffer result = new StringBuffer();          if (ips != null &&

ips.length() == 8) {               for (int i = 0; i < 8; i += 2) {          

         if (i != 0)                          result.append('.');              

     result.append(Integer.parseInt(ips.substring(i, i + 2), 16));              

}          }          return result.toString();     } catch

(NumberFormatException ex) {          Logger.e(ex);     }     return

"";}ip:192.168.68.128 16 =>hex :c0a84480

21、 文件夹排序(先文件夹排序,后文件排序)

public static void sortFiles(File[] files) {    

Arrays.sort(files, new Comparator() {          @Override          public

int compare(File lhs, File rhs) {               //回来负数表明o1 小于o2,回来0

表明o1和o2持平,回来正数表明o1大于o2。               boolean l1 = lhs.isDirectory();          

    boolean l2 = rhs.isDirectory();               if (l1 && !l2)        

           return -1;               else if (!l1 && l2)                

   return 1;               else {                    return

lhs.getName().compareTo(rhs.getName());               }          }    

});}

22、代码设置TextView的款式

运用过自定义Dialog可能立刻会想到用如下代码:

new TextView(this,null,R.style.text_style);

但你运转这代码你会发现毫无作用!准确用法:

new TextView(new ContextThemeWrapper(this,

R.style.text_style))

23、获取网络类型称号

public static String getNetworkTypeName(Context

context) {     if (context != null) {          ConnectivityManager connectMgr =

(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  

       if (connectMgr != null) {                  NetworkInfo info =

connectMgr.getActiveNetworkInfo();                  if (info != null) {        

              switch (info.getType()) {                            case

ConnectivityManager.TYPE_WIFI:                                  return "WIFI";  

                         case ConnectivityManager.TYPE_MOBILE:                  

               return getNetworkTypeName(info.getSubtype());                    

  }                  }          }     }     return

getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN);}public static String

getNetworkTypeName(int type) {     switch (type) {          case

TelephonyManager.NETWORK_TYPE_GPRS:               return "GPRS";          case

TelephonyManager.NETWORK_TYPE_EDGE:               return "EDGE";          case

TelephonyManager.NETWORK_TYPE_UMTS:               return "UMTS";          case

TelephonyManager.NETWORK_TYPE_HSDPA:               return "HSDPA";          case

TelephonyManager.NETWORK_TYPE_HSUPA:               return "HSUPA";          case

TelephonyManager.NETWORK_TYPE_HSPA:               return "HSPA";          case

TelephonyManager.NETWORK_TYPE_CDMA:               return "CDMA";          case

TelephonyManager.NETWORK_TYPE_EVDO_0:               return "CDMA - EvDo rev. 0";

         case TelephonyManager.NETWORK_TYPE_EVDO_A:               return "CDMA -

EvDo rev. A";          case TelephonyManager.NETWORK_TYPE_EVDO_B:              

return "CDMA - EvDo rev. B";          case TelephonyManager.NETWORK_TYPE_1xRTT:

              return "CDMA - 1xRTT";          case

TelephonyManager.NETWORK_TYPE_LTE:               return "LTE";          case

TelephonyManager.NETWORK_TYPE_EHRPD:               return "CDMA - eHRPD";      

   case TelephonyManager.NETWORK_TYPE_IDEN:               return "iDEN";        

 case TelephonyManager.NETWORK_TYPE_HSPAP:               return "HSPA+";        

 default:               return "UNKNOWN";     }}

24、Android解压Zip包

/** * 解压一个紧缩文档 到指定方位 * * @param zipFileString

紧缩包的姓名 * @param outPathString 指定的途径 * @throws Exception */ public static void

UnZipFolder(String zipFileString, String outPathString) throws Exception {    

 java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new

java.io.FileInputStream(zipFileString));      java.util.zip.ZipEntry zipEntry;  

   String szName = "";while ((zipEntry = inZip.getNextEntry()) != null) {      

    szName = zipEntry.getName();           if (zipEntry.isDirectory()) {        

       // get the folder name of the widget                szName =

szName.substring(0, szName.length() - 1);                java.io.File folder =

new java.io.File(outPathString + java.io.File.separator + szName);              

 folder.mkdirs();          } else {                java.io.File file = new

java.io.File(outPathString + java.io.File.separator + szName);              

 file.createNewFile();                // get the output stream of the file      

         java.io.FileOutputStream out = new java.io.FileOutputStream(file);    

           int len;                byte[] buffer = new byte[1024];              

 // read (len) bytes into buffer                while ((len =

inZip.read(buffer)) != -1) {                      // write (len) byte from

buffer at the position 0                      out.write(buffer, 0, len);        

             out.flush();               }               out.close();         }  

 }//end of while    inZip.close();}//end of func

25、 从assets中读取文本和图像资本

/** 从assets 文件夹中读取文本数据 */public static String

getTextFromAssets(final Context context, String fileName) {     String result =

"";     try {          InputStream in =

context.getResources().getAssets().open(fileName);          // 获取文件的字节数        

 int lenght = in.available();          // 创立byte数组          byte[] buffer = new

byte[lenght];          // 将文件中的数据读到byte数组中          in.read(buffer);        

 result = EncodingUtils.getString(buffer, "UTF-8");          in.close();     }

catch (Exception e) {          e.printStackTrace();     }     return result;}/**

从assets 文件夹中读取图像 */public static Drawable loadImageFromAsserts(final Context

ctx, String fileName) {      try {            InputStream is =

ctx.getResources().getAssets().open(fileName);            return

Drawable.createFromStream(is, null);      } catch (IOException e) {          

 if (e != null) {                 e.printStackTrace();            }      } catch

(OutOfMemoryError e) {            if (e != null) {                

e.printStackTrace();            }      } catch (Exception e) {            if (e

!= null) {                 e.printStackTrace();            }      }      return

null;}

26、打开、收起状况栏

public static final void collapseStatusBar(Context

ctx) {     Object sbservice = ctx.getSystemService("statusbar");     try {      

   Class statusBarManager = Class.forName("android.app.StatusBarManager");  

       Method collapse;          if (Build.VERSION.SDK_INT >=

Build.VERSION_CODES.JELLY_BEAN_MR1) {                collapse =

statusBarManager.getMethod("collapsePanels");          } else {              

 collapse = statusBarManager.getMethod("collapse");          }        

 collapse.invoke(sbservice);     } catch (Exception e) {          

e.printStackTrace();     } }public static final void expandStatusBar(Context

ctx) {      Object sbservice = ctx.getSystemService("statusbar");      try {    

       Class statusBarManager =

Class.forName("android.app.StatusBarManager");            Method expand;        

   if (Build.VERSION.SDK_INT >= 17) {                  expand =

statusBarManager.getMethod("expandNotificationsPanel");            } else {    

             expand = statusBarManager.getMethod("expand");            }        

   expand.invoke(sbservice);      } catch (Exception e) {          

 e.printStackTrace();      }}

用处:可用于点击Notifacation以后收起状况栏

27、 获取状况栏高度

public static int getStatusBarHeight(Context

context){     Class c = null;     Object obj = null;     Field field = null;

    int x = 0, statusBarHeight = 0;     try {          c =

Class.forName("com.android.internal.R$dimen");          obj = c.newInstance();  

       field = c.getField("status_bar_height");          x =

Integer.parseInt(field.get(obj).toString());          statusBarHeight =

context.getResources().getDimensionPixelSize(x);     } catch (Exception e1) {  

       e1.printStackTrace();     }     return statusBarHeight;}

28、ListView运用ViewHolder极简写法

public staticT

getAdapterView(View convertView, int id) {     SparseArrayviewHolder =

(SparseArray) convertView.getTag();     if (viewHolder == null) {        

 viewHolder = new SparseArray();          convertView.setTag(viewHolder);

    }     View childView = viewHolder.get(id);     if (childView == null) {    

     childView = convertView.findViewById(id);          viewHolder.put(id,

childView);     }     return (T) childView;}

用法:

@Overridepublic View getView(int position, View

convertView, ViewGroup parent) {     if (convertView == null) {        

 convertView =

LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_item, parent,

false);     }     ImageView thumnailView = getAdapterView(convertView,

R.id.video_thumbnail);     ImageView avatarView =  getAdapterView(convertView,

R.id.user_avatar);     ImageView appIconView = getAdapterView(convertView,

R.id.app_icon);}

用起来十分简练,将ViewHolder隐于无形。

29、 设置Activity通明

@android:color/transparent@nulltruetrue@null" cdata_tag="style" parent="AppBaseTheme" name="TransparentActivity">

阐明:AppBaseTheme通常是你application指定的android:theme是啥这儿即是啥,不然Activity内部的空间个性可能不一致。

用处:用于模仿Dialog作用,比方再Service中没法用Dialog,就可以用Activity来模仿

30、 代码切换全屏

//切换到全屏getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//切换到非全屏getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

留意:切换到全屏时,底部的虚拟按键仍然是显现的。次办法可屡次调用用于切换

用处:播放器界面经常会用到

优质IT资源分享社区为你提供此文。

站有大量优质android教程视频,资料等资源,包含android基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。

android教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客