Android实用代码

一、获取应用程序下所有Activity

public static ArrayList getActivities(Context ctx) {
      ArrayList result = 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;
  }


二、检测字符串中是否包含汉字
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;
      }

三、检测字符串中只能包含:中文、数字、下划线(_)、横线(-)

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

四、使用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效果要好,可避免出现闪烁问题。

五、
扫描指定的文件

sendBroadcast( new  Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,  uri));

  用途:从本软件新增、修改、删除图片、文件某一个文件(音频、视频)需要更新系统媒体库时使用,不必扫描整个SD卡。

 六、Dip转px

      public  static  int  dipToPX( final  Context  ctx,  float  dip)  {
                return  ( int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,  dip,  ctx.getResources().getDisplayMetrics());
        }
用途:难免在Activity代码中设置位置、大小等,本方法就很有用了!

七、发送不重复的通知(Notification)

      public  static  void  sendNotification(Context  context,  String  title,
                        String  message,  Bundle  extras)  {
                Intent  mIntent  new  Intent(context,  FragmentTabsActivity. class);
                mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                mIntent.putExtras(extras);

                int  requestCode  ( intSystem.currentTimeMillis();

                PendingIntent  mContentIntent  PendingIntent.getActivity(context,
                                requestCode,  mIntent,  0);

                Notification  mNotification  new  NotificationCompat.Builder(context)
                                .setContentTitle(title).setSmallIcon(R.drawable.app_icon)
                                .setContentIntent(mContentIntent).setContentText(message)
                                .build();
                mNotification.flags  |=  Notification.FLAG_AUTO_CANCEL;
                mNotification.defaults  Notification.DEFAULT_ALL;

                NotificationManager  mNotificationManager  (NotificationManager)  context
                                .getSystemService(Context.NOTIFICATION_SERVICE);

                mNotificationManager.notify(requestCode,  mNotification);
        }
代码说明:关键点在这个requestCode,这里使用的是当前系统时间,巧妙的保证了每次都是一个新的Notification产生。 

 八、代码设置TextView的样式

使用过自定义Dialog可能马上会想到用如下代码:

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

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

new TextView(new ContextThemeWrapper(thisR.style.text_style))

 

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

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

       
        public  static  String  texToIp(String  ips)  {
                try  {
                        StringBuffer  result  new  StringBuffer();
                        if  (ips  !=  null  &&  ips.length()  ==  8)  {
                                for  ( int  0;  8;  +=  2)  {
                                        if  (i  !=  0)
                                                result.append('.');
                                        result.append(Integer.parseInt(ips.substring(i,  2),  16));
                                }
                        }
                        return  result.toString();
                catch  (NumberFormatException  ex)  {
                        Logger.e(ex);
                }
                return  "";
        }

ip:192.168.68.128 16 =>hex :c0a84480

 十、WebView保留缩放功能但隐藏缩放控件

        mWebView.getSettings().setSupportZoom( true);
        mWebView.getSettings().setBuiltInZoomControls( true);
        if  (DeviceUtils.hasHoneycomb())
              mWebView.getSettings().setDisplayZoomControls( false);

注意:setDisplayZoomControls是在API Level 11中新增。

 十一、获取网络类型名称

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

十二、Android解压Zip包

     
        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

 十三、 从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;
        }
       
       
        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;
        }
转载自: 这里
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值