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

[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进行拖动

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

[java] view plain copy
  1. windowParams=newWindowManager.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.   ImageViewiv=newImageView(getContext());
  8.   iv.setImageBitmap(bm);
  9.   windowManager=(WindowManager)getContext().getSystemService(
  10.   Context.WINDOW_SERVICE);//"window"
  11.   windowManager.addView(iv,windowParams);
拖动效果:

[java] view plain copy
  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.   

更多相关文章

  1. android LocalActivityManager说明
  2. android AudioManager
  3. Android(安卓)去掉toolbar阴影
  4. android 实现一直震动和间歇震动
  5. android AudioManager
  6. Delphi XE5 Android(安卓)调用手机震动
  7. Android打包常见问题
  8. android 服务service里面出Toast
  9. android改变全局字体大小

随机推荐

  1. Android动态加载外部jar包及jar包中图片
  2. Android(安卓)开发新方向 Android(安卓)W
  3. android手电筒原理
  4. 70个具有商业实战性的精品Android源码
  5. 用Android(安卓)LiveCD体验Android(安卓)
  6. Android(安卓)线程学习
  7. 为Android加入busybox工具
  8. android:layout_gravity 和 android:grav
  9. Android单元测试之Testing和Instrumentat
  10. Android的Gradle插件