Android有用代码(二)

文章转自:http://blog.csdn.net/aomandeshangxiao/article/details/7286354

            记得2011年的时候,整理了android有用代码片段这篇文章,后来,越添加越多,很是不方便,决定,每20条为一篇,分开记载,很多内容是从别的博客上面转载而来,由于疏忽没有说明来处,敬请作者谅解!

         如果这篇文章对您有用,劳烦几秒钟帮忙投下票:http://vote.blog.csdn.net/item/blogstar/aomandeshangxiao,Csdn 2012博客之星投票,谢谢!!!

二十一、获取手机屏幕分辨率

  1. DisplayMetrics  dm =new DisplayMereics(); 
  2.  
  3.         getWindowManager().getDefaultDisplay().getMetrics(dm); 
  4.  
  5.        float width = dm.widthPixels * dm.density; 
  6.  
  7.        float height = dm.heightPixels * dm.density 
    在这里问什么要乘以  dm.density   了,是因为通过dm.widthPixels的到的结果始终是320,不是真实的屏幕分辨率,所以要乘以dm.density得到真实的分辨率。

     二十二、在Activity里面播放背景音乐

  1. publicvoid onCreate(Bundle savedInstanceState) { 
  2.             super.onCreate(savedInstanceState); 
  3.              setContentView(R.layout.mainlay); 
  4.              mediaPlayer = MediaPlayer.create(this, R.raw.mu); 
  5.              mediaPlayer.setLooping(true); 
  6.              mediaPlayer.start(); 
  7.  
  8.                    } 

      二十三、让程序的界面不随机器的重力感应而翻转

                 第一种方法,在manifast文件里面

  1. <activity 
  2.   android:screenOrientation="portrait"> 
  3.   </activity> 

                 第二种,在代码里面

  1. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

   二十四、使activity全屏显示

  1. requestWindowFeature(Window.FEATURE_NO_TITLE); 
  2.         getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,       
  3.                 WindowManager.LayoutParams. FLAG_FULLSCREEN); 

        二十五、在RelativeLayout中使selector要注意点

         关于selector的使用方法,可以参考http://blog.csdn.net/aomandeshangxiao/article/details/6759576这篇文章,今天,遇到在RelativeLayout中添加background为selector后没有反应的问题,寻摸了很长时间,一直没有找到原因,其实只要加上一句代码就完全可以解决:

  1. <span style="font-size:16px;">RelativeLayout 里面加上android:clickable="true"</span> 

这样,RelativLayout就会出现在selector里面定义的效果。


   二十六、显示或隐藏虚拟键盘

  1. 显示: 
  2. InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE)); 
  3. imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
  4.  
  5. 隐藏: 
  6. InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE)); 
  7. imm.hideSoftInputFromWindow(m_edit.getWindowToken(),0); 

  二十七、退出程序时清除通知中信息 

  1. NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
  2. nm.cancelAll(); 

    二十八、创建快捷方式

  1. Intent intent=new Intent(); 
  2. //设置快捷方式的图标 
  3. intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.img)); 
  4. //设置快捷方法的名称 
  5. intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"点击启动哥的程序");           //设置点击快键图标的响应操作 
  1. intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent(this,MainActivity.class)); 
  2. //传递Intent对象给系统 
  3. setResult(RESULT_OK, intent); 
  4. finish(); 


   二十九、获取文件中的类名:

  1. String path = context.getPackageManager().getApplicationInfo( 
  2.                                         context.getPackageName(),0).sourceDir; 
  3.                         DexFile dexfile =new DexFile(path); 
  4.                         Enumeration<String> entries = dexfile.entries(); 
  5.                        while (entries.hasMoreElements()) { 
  6.                                 String name = (String) entries.nextElement(); 
  7.                                 ...... 
  8.                         } 



三十. TextView中的getTextSize返回值是以像素(px)为单位的,

         而setTextSize()是以sp为单位的.

        所以如果直接用返回的值来设置会出错,解决办法是:

        用setTextSize()的另外一种形式,可以指定单位:

  1. TypedValue.COMPLEX_UNIT_PX : Pixels   
  2. TypedValue.COMPLEX_UNIT_SP : Scaled Pixels   
  3. TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels 

三十一. 在继承自View时,绘制bitmap时,需要将图片放到新建的drawable-xdpi

中,否则容易出现绘制大小发生改变


三十二. 在文字中加下划线: textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);


三十三. scrollView是继承自frameLayout,所以在使用LayoutParams时需要用frameLayout

三十四、android阴影字体设置

  1. <TextView android:id="@+id/tvText1"  
  2. android:layout_width="wrap_content"  
  3. android:layout_height="wrap_content"  
  4. android:text="text1"  
  5. android:textSize="30sp"  
  6. android:textStyle="bold"  
  7. android:textColor="#FFFFFF"  
  8. android:shadowColor="#ff0000ff" 
  9. android:shadowDx="5" 
  10. android:shadowDy="5"      
  11. android:shadowRadius="10"/> 


android:shadowColor 阴影颜色

android:shadowDx 阴影的水平偏移量

android:shadowDy 阴影的垂直偏移量

android:shadowRadius 阴影的范围

为了统一风格和代码的复用,通常可以把这个样式抽取放入到style.xml文件中

  1. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <resources> 
  3.     <stylename="textstyle">        
  4.        <itemname="android:shadowColor">#ff0000ff</item> 
  5.        <itemname="android:shadowRadius">10</item> 
  6.        <itemname="android:shadowDx">5</item> 
  7.        <itemname="android:shadowDy">5</item>      
  8.     </style> 
  9. </resources> 
  1. <TextView 
  2.        style="@style/textstyle" 
  3.        android:layout_width="fill_parent" 
  4.        android:layout_height="wrap_content" 
  5.        android:text="字体样式" 
  6.        android:textSize="30sp" 
  7.        android:textStyle="bold"/> 

三十五、android实现手机震动功能

  1. import android.app.Activity; 
  2. import android.app.Service; 
  3. import android.os.Vibrator; 
  4.  
  5. publicclass TipHelper {  
  6.     public staticvoid Vibrate(final Activity activity,long milliseconds) { 
  7.         Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE); 
  8.         vib.vibrate(milliseconds); 
  9.     } 
  10.     public staticvoid Vibrate(final Activity activity,long[] pattern,boolean isRepeat) { 
  11.         Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE); 
  12.         vib.vibrate(pattern, isRepeat ?1 : -1); 
  13.     } 


还需要在AndroidManifest.xml 中添加震动权限:

  1. <uses-permissionandroid:name="android.permission.VIBRATE"/> 
通过上面操作,我们可以使用TipHelper所定义的函数了。两个Vibrate函数的参数简单介绍如下:

final Activity activity  :调用该方法的Activity实例

long milliseconds :震动的时长,单位是毫秒

long[] pattern   :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒

boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次

三十六、常用的正则表达式

       ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //email地址
       ^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //url
       ^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$ //年-月-日
       ^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$  //月/日/年
       ^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$   //Emil
       ^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$     //电话号码
       ^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$   //IP地址

       (^\s*)|(\s*$)   // 首尾空格

       ^[a-zA-Z][a-zA-Z0-9_]{4,15}$  // 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)

       ^[1-9]*[1-9][0-9]*$  //  腾讯QQ号


三十七、输入框不挤压activity布局:

在manifest文件activity下 加:

  1. android:windowSoftInputMode="adjustPan" 

三十八、listview中item中button可点击:

  1. android:descendantFocusability="blocksDescendants" 

三十九、获取移动设备的IP地址:

  1. publicclass Tools { 
  2.     public static String getLocalIpAddress() {   
  3.        try {   
  4.            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {   
  5.                 NetworkInterface intf = en.nextElement();   
  6.                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {   
  7.                     InetAddress inetAddress = enumIpAddr.nextElement();   
  8.                    if (!inetAddress.isLoopbackAddress()) {   
  9.                        return inetAddress.getHostAddress().toString();   
  10.                     }   
  11.                 }   
  12.             }   
  13.         }catch (SocketException ex) {   
  14.             Log.e("出错啦", ex.toString());   
  15.         }   
  16.        returnnull;   
  17.     }   
  18. 然后 
  19.         WifiManager wm = (WifiManager)getSystemService(WIFI_SERVICE); 
  20.         WifiInfo wi = wm.getConnectionInfo(); 
  21.         System.out.println("IP地址是:"+Tools.getLocalIpAddress()); 
  22.         System.out.println("SSID:"+wi.getSSID()); 
  23. 最后记得加两个权限 
  24.     <uses-permission android:name="android.permission.INTERNET"/> 
  25.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 


四十、高仿小米launcher跨屏拖动item(GridView长按item进行拖动

        触发长按事件后浮动原理:

    

  1. windowParams = new WindowManager.LayoutParams(); 
  2.   windowParams.gravity = Gravity.TOP | Gravity.LEFT; 
  3.   windowParams.x = x - itemWidth / 2
  4.   windowParams.y = y - itemHeight / 2
  5.   windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT; 
  6.   windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT; 
  7.   ImageView iv = new ImageView(getContext()); 
  8.   iv.setImageBitmap(bm); 
  9.   windowManager = (WindowManager) getContext().getSystemService( 
  10.   Context.WINDOW_SERVICE);// "window" 
  11.   windowManager.addView(iv, windowParams); 
windowParams = new WindowManager.LayoutParams();
  windowParams.gravity = Gravity.TOP | Gravity.LEFT;
  windowParams.x = x - itemWidth / 2;
  windowParams.y = y - itemHeight / 2;
  windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
  windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
  ImageView iv = new ImageView(getContext());
  iv.setImageBitmap(bm);
  windowManager = (WindowManager) getContext().getSystemService(
  Context.WINDOW_SERVICE);// "window"
  windowManager.addView(iv, windowParams);
      拖动效果:

  1. if (dragImageView != null) { 
  2.   windowParams.alpha = 0.6f; 
  3.   windowParams.x = x - itemWidth / 2
  4.   windowParams.y = y - itemHeight / 2
  5.   windowManager.updateViewLayout(dragImageView, windowParams); 
  6.   } 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio 是一款功能强大的集成开发环境,具备了丰富的代码补全功能,使开发者能够更高效地编写代码。在 Android Studio 中,代码补全主要通过以下两种方式实现: 1. 自动补全:在输入代码的过程中,当键入一部分代码时,Android Studio 会自动显示相关的代码提示。这些提示包括已经定义的变量、方法、属性等,以及相关的 Android 框架类和方法。我们只需要选择合适的提示项,按下 Enter 键,即可将代码自动补全到编辑器中。 2. 快捷键补全:除了自动补全外,我们还可以使用一些快捷键来进行代码补全。常用的快捷键包括: a. Ctrl + Space:在输入过程中,按下 Ctrl + Space 键组合,可以强制触发代码补全。这个快捷键特别适用于没有自动显示代码提示的情况。 b. Ctrl + Shift + Space:在输入一段代码后,按下 Ctrl + Shift + Space 键组合,可以获得更详细的代码提示信息。这个快捷键在需要查看更多选项时非常有用。 c. Tab 键:当代码提示出现时,我们可以按下 Tab 键来选择并补全当前的提示项。这个快捷键在需要快速选择代码补全项时非常方便。 d. Ctrl + P:在输入方法参数的过程中,按下 Ctrl + P 键组合,可以显示当前方法的参数列表。这个快捷键对于快速查看方法参数非常有帮助。 总之,在 Android Studio 中,代码补全功能使得开发者能够更快速地编写代码,并减少出错的可能性。我们可以通过自动补全和快捷键补全来实现高效的代码编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值