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

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

[java] view plain copy
  1. DisplayMetricsdm=newDisplayMereics();
  2. getWindowManager().getDefaultDisplay().getMetrics(dm);
  3. floatwidth=dm.widthPixels*dm.density;
  4. floatheight=dm.heightPixels*dm.density
在这里问什么要乘以dm.density 了,是因为通过dm.widthPixels的到的结果始终是320,不是真实的屏幕分辨率,所以要乘以dm.density得到真实的分辨率。

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

[java] view plain copy
  1. publicvoidonCreate(BundlesavedInstanceState){
  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. }

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

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

[html] view plain copy
  1. <activity
  2. android:screenOrientation="portrait">
  3. </activity>

第二种,在代码里面

[java] view plain copy
  1. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

二十四、使activity全屏显示

[java] view plain copy
  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后没有反应的问题,寻摸了很长时间,一直没有找到原因,其实只要加上一句代码就完全可以解决:

[java] view plain copy
  1. <spanstyle="font-size:16px;">RelativeLayout里面加上android:clickable="true"</span>

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


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

[java] view plain copy
  1. 显示:
  2. InputMethodManagerimm=(InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
  3. imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
  4. 隐藏:
  5. InputMethodManagerimm=(InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
  6. imm.hideSoftInputFromWindow(m_edit.getWindowToken(),0);

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

[java] view plain copy
  1. NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  2. nm.cancelAll();

二十八、创建快捷方式

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


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

[java] view plain copy
  1. Stringpath=context.getPackageManager().getApplicationInfo(
  2. context.getPackageName(),0).sourceDir;
  3. DexFiledexfile=newDexFile(path);
  4. Enumeration<String>entries=dexfile.entries();
  5. while(entries.hasMoreElements()){
  6. Stringname=(String)entries.nextElement();
  7. ......
  8. }



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

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

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

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

[java] view plain copy
  1. TypedValue.COMPLEX_UNIT_PX:Pixels
  2. TypedValue.COMPLEX_UNIT_SP:ScaledPixels
  3. TypedValue.COMPLEX_UNIT_DIP:DeviceIndependentPixels

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

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


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


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

三十四、android阴影字体设置

[html] view plain copy
  1. <TextViewandroid: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文件中

[html] view plain copy
  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>
[html] view plain copy
  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实现手机震动功能

[java] view plain copy
  1. importandroid.app.Activity;
  2. importandroid.app.Service;
  3. importandroid.os.Vibrator;
  4. publicclassTipHelper{
  5. publicstaticvoidVibrate(finalActivityactivity,longmilliseconds){
  6. Vibratorvib=(Vibrator)activity.getSystemService(Service.VIBRATOR_SERVICE);
  7. vib.vibrate(milliseconds);
  8. }
  9. publicstaticvoidVibrate(finalActivityactivity,long[]pattern,booleanisRepeat){
  10. Vibratorvib=(Vibrator)activity.getSystemService(Service.VIBRATOR_SERVICE);
  11. vib.vibrate(pattern,isRepeat?1:-1);
  12. }
  13. }


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

[html] view plain copy
  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下 加:

[html] view plain copy
  1. android:windowSoftInputMode="adjustPan"

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

[html] view plain copy
  1. android:descendantFocusability="blocksDescendants"

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

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


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

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

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);
拖动效果:

if (dragImageView != null) {  windowParams.alpha = 0.6f;  windowParams.x = x - itemWidth / 2;  windowParams.y = y - itemHeight / 2;  windowManager.updateViewLayout(dragImageView, windowParams);  }

更多相关文章

  1. Gradle系列(四) Gradle插件
  2. Android文件路径
  3. Android(安卓)获取根视图
  4. Android移动view动画问题 关于view的位置移动了,但view里面绑定的
  5. Android(安卓)通过handler和message在子线程里面去更新UI
  6. Eclipse下安装Android(安卓)ADT插件问题
  7. Android——Notifications笔记
  8. 在android里面调用javascript代码
  9. android 圆形的图片里面带字

随机推荐

  1. linux从入门到精通(八)(添加用户)
  2. Linux 64位下Oracle 12CR2安装(二)
  3. Linux命令-定时任务命令:crontab
  4. linux3.1内核移植到S3C2416的过程和问题
  5. 10.32/10.33 rsync通过服务同步 10.34 li
  6. linux watch——重复执行同一命令
  7. linux 创建子进程
  8. linux diff(differential) 命令详解
  9. Linux串口应用编程
  10. Linux编程(8)_文件IO