当前位置: 代码迷 >> Android >> Android 小学问
  详细解决方案

Android 小学问

热度:65   发布时间:2016-05-01 20:53:54.0
Android 小知识
1、判断sd卡是否存在

2、TextView部分文字设置颜色

3、替换数据库某字段中某些字符的方法:

4、单选按钮默认选中:

下拉列表默认选中:

5、TextView中嵌套图片:

6、ListView去掉下拉条:

方法一:在xml属性中设置
方法二:在代码中设置:

7、设置Activity的风格:

8、创建一个背景模糊的Widow,且将对话框放在前景

9、list滚动时出现黑色底的问题:

解决方法:
方法一:
在XML中设置 android:cacheColorHint="#00000000"

方法二:
在代码中设置 listView.setCacheColorHint(0);

10、编辑框中指定输入的类型,设置属性digits即可:

例:只允许输入数字
android:digits="0123456789"  或  android:digits="integer"   或  android:digits="num"

11、利用反射机制,获取drawable文件夹下的图片名称:

12、缓冲流播放MP3:

13、下面的代码可以用来点亮屏幕:

下面的代码用来屏幕解锁:

使用这两段代码,需要在AndroidManifest文件中加入以下权限:

14、android 跑马灯效果做如下设置即可:

15、拦截短信:
    当android系统接收到短信时,会发送一个广播BroadcastReceiver,这个广播是以有序广播的形式发送的。
    所谓的有序广播就是广播发出后,接收者是按照设置的优先级一个一个接着接收,前面的接收者可以选择是否终止这条广播以使后面的接收者接收不到,而普遍广播发送 后所有的接收者都能同时接到,但是不能终止这条广播,也不能将它的处理结果传递给下个接收者。
    sms拦截就是通过实现一个BroadcastReceiver并将其的优先级设置的比系统sms接收者高。
    android:priority就是设置优先级的,设置为100即可:

16、如果在文件夹下选择视频文件时,想调用自己的播放器,需要在Manifest.xml中设置过滤器,设置如下:

如果想在浏览器中调用自己的播放器,设置如下:



如果两者都要实现的话,就必须配两个过滤器。

17、显示图片时,用 mImageView.setScaleType(ImageView.ScaleType.FIT_XY); 可以填充整个区域。

18、保持屏幕长开:

开启、关闭屏幕时发送的广播:

19、判断一个intent是否可用:
 
上述代码判断action的intent是否可用
(备注,也可以得到相应intent的应用程序信息)
 
我们可以根据scanAvailable 来判断是否让用户操作来发送该intent:

20、获取所有桌面应用的图标:

21、Android 系统图片数据库:

往改数据库中插入数据,用到了内容提供者,大致如下:

22、获取UI控件的宽、高:

在前面几个周期函数中都无法获取宽度和高度值,但在事件中或用定时器可以获取,如下:

23、判断某一服务是否在运行:


24、根据角度求正弦值:

  Math.sin(Math.PI/2)
  
  根据正弦值求角度:
  Math.toDegrees(Math.asin(1.0))
  
  其他求法同上

25、画图时,设置画布抗锯齿:

26、让ListView的滚动条定位到最后一行
设置以下两个属性:

27、获取系统所有包的信息:


28、如何判断一个应用是系统应用???

核心判断:

29、卸载应用:

30、检查网络状态:

31、获取本地apk文件的包名:

32、捕获Home键,重写onAttachedToWindow()方法,在方法里面 setType 即可,去掉之后就无法捕获Home键:

33、Notification通知如何点击后自动消失:
    代码中加上 notification.flags |= Notification.FLAG_AUTO_CANCEL 即可
    Notification通知无清楚按钮,如音乐播放时的状态:
    代码中加上 notification.flags |= Notification.FLAG_NO_CLEAR 即可

34、横竖屏切换时候activity的生命周期 android:configChanges

  • 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
  • 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
  • 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

35、获取默认的应用图标:

36、优化Dalvik虚拟机的堆内存分配:

    对于Android平台来说,其托管层使用的Dalvik Java VM从目前的表现来看还有很多地方可以优化处理,比如我们在开发一些大型游戏或耗资源的应用中可能考虑手动干涉GC处理,
使用 dalvik.system.VMRuntime类提供的setTargetHeapUtilization方法可以增强程序堆内存的处理效率。当然具体原理我们可以参考开源工程,这里我们仅说下使用方法:   

在程序onCreate时调用一下代码即可:

Android堆内存也可自己定义大小:
   
    (可参考Lanucher源码中LauncherApplication.java文件中使用)
   

37、PopupWindow 的使用:
显示 PopupWindow 的代码如下:

隐藏 PopupWindow 的代码:

38、Android ListView的美化方法:

  • listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来
      代码结解决 android:scrollingCache=”false”
  • listview的上边和下边有黑色的阴影
      代码解决:android:fadingEdge=”none”  
  • lsitview的每一项之间需要设置一个图片做为间隔
      代码解决:  android:[email protected]/list_driver”  其中  @drawable/list_driver 是一个图片资源
  • 自定义listview的时候,会出现下面选中一个空间黑色底色的情况,破坏整体美观度
      代码解决:android:cacheColorHint=“#00000000”
  • 默认显示选中的item为橙黄底色,有时候我们需要去掉这种效果
      代码解决:android:listSelector属性.

39、
    在AndroidManifest.xml文件中设置 android:launchMode="singleInstance" ,可以保证栈中每个Activity只有一个实例,防止重复界面的不断加载。
    单纯的跳转页面时是可以处理的,但是跳转界面需要传值时就会出问题,这样处理只会将后台的Activity启动,传递的值是无法获取并重新加载的,
    如:ActivityA ——> ActivityB ——(搜索关键字)——> ActivityA    (当我从ActivityB传递关键字到ActivityA时,只是将栈底的ActivityA放在了栈顶,并不会做其他操作)
    如果既要保证每个Activity只有一个实例,又可以传递数据,可以在跳转界面的代码处加上下面一句话:
    这样处理,就是在跳转的时候将堆栈中该Activity前面的所有Activity都清除,并重新发intent将此Activity启动,因此就可以获取传递过来的数据进行相关处理。

40、线程问题:

The content of the adapter has changed but ListView did not receive a notification. 
Make sure the content of your adapter is not modified from a background thread, but only from the UI thread。
解决问题的方法:

    这个错误经常出现在Activity休眠起来之后,主要还是使用adapter不太小心造成的,有时候我们获取数据都使用后台线程操作,
    当Activity休眠时,后台线程还在运行,唤醒Activity时再次操作该数据就会报这个错,原因就是数据在后台改变了但界面没有刷新。
    Activity从休眠状态被唤醒时会调用onResume()方法,我们可以在onResume()方法中进行数据的刷新notifyDataSetChanged,如下操作:

41、保留小数点后两位:

42、判断耳机状态:

43、异步任务调用时,先判断是否在运行,如果正在运行,则先取消该任务,然后再开启

44、黑屏后音频播放会有停顿的问题:
播放时:
停止时:

权限:

45、当ViewFlipper 与 touch 事件冲突时,ViewFlipper的滑屏事件会被 touch 事件拦截,解决方法如下:

46、
查询图片,Uri地址为:MediaStore.Images.Media.EXTERNAL_CONTENT_URI
查询音乐,Uri地址为:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 

47、
TextView底部加横线:
TextView中间加横线:


  相关解决方案