Android学习笔记(四)

2.      Settings.System.getInt(ContentResolvercr, String name, int def)方法从系统设置(settings)参数的集合中取出名称为name的参数的参数值,如果系统设置中没有该参数,则返回默认值def。

3.      Activity的函数setVolumeControlStream(intstreamType)用于设置所在Activity中音量控制键控制的音频流,一般在onCreate()函数中设定。其中,streamType是需要调整音量的类型,有以下几种:

     ●AudioManager.STREAM_MUSIC    媒体音量,即音频和视频音量

     ●AudioManager.STREAM_RING      手机铃声音量

     ●AudioManager.STREAM_ALARM    手机警报音量

     ●AudioManager.STREAM_NOTIFICATION     窗口顶部状态栏通知声音量

     ●AudioManager.STREAM_SYSTEM     系统声音音量

     ●AudioManager.STREAM_VOICECALL   通话声音的音量

     ●AudioManager.STREAM_DTMF   双音双频的音量

4. public Intent registerReceiver(BroadcastReceiverreceiver, IntentFilter filter)的作用:

  Resgister aBroadcastRecevier to be run in the main activity thread. The receiver will becalled with any broadcast Intent that matches the filter in the mainapplication thread.

5. boolean android.app.Activity.isFinishing()函数的使用:

  Check to seewhether this activity is in the process of finishing, either because you calledfinish() on it or someone else has requestedthat it finished. This is often used in onPause()to determine whether the activity is simply pausing or completely finishing. Ifthe activity is finishing, returns true; else return false.

6. java.lang.ref.WeakReference类简介

  在写一个Java程序时,想要随时获取某个对象的信息,如对象什么时候会被垃圾回收机制回收,可以使用Weak Reference,但不能使用Reference,如果使用Reference,则该对象永远不能被清除。但使用Weak Reference能够随时取得对象的信息,但不影响对该对象的垃圾回收。使用方式例子:

    A obj= newA();

    WeakReferencewr= new WeakReference(obj);

    obj= null;

    …

    //等待一段时间,obj对象会被垃圾回收

    If(wr.get()==null){

       System.out.println(“obj已被清除”);

}else{

    System.out.println(“obj没被清除”);

}

  通过get()方法获取WeakReference所指的对象。

7. View.setVisibility()参数有三个不同值: 

     ● View.VISIBLE      该视图可见

     ● View.INVISIBLE    该视图不可见,但这个View在ViewGroup中仍保留它的位置,不重新layout

      ●View.GONE         该视图不可见,但这个View在ViewGroup中不保留位置,重新layout,后面的view就会取代它的位置

8. ListView的android:cacheColorHint属性和android:listSelector属性

  ● ListView的默认背景是和系统窗口一样的透明色,如果给ListView加上图片或者背景色,滚动时ListView会黑掉,

因为,滚动时列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919。要改变这种情况,

只需调用ListView的setCacheColorHint(0),颜色值设为0,或者xml文件中ListView的属性android:cacheColorHint=

“#00000000”。如此,滚动重绘View时便不会有背景颜色。

                                                     

 ● 当单击ListView的item是i,默认会显示选中的item为橙黄底色。如果需要去掉这种效果,则可以使用属性android:listSelector属性。如果设置为android:listSelector= “#00000000”或者android:listSelector=

“@android:color/transparent”,则在单击ListView的item时便不会有任何现象了。

                                                   

9. android单位px, dip(dp), sp, dpi简介

  ●px (pixels): 像素,是屏幕上实际的像素点单位。一般不使用该单位。

  ●dip/dp (device independent pixels): 设备独立像素,与设备屏幕无关

  ●sp(scaled pixels): 类似dp,主要用于处理字体的大小

  ●dpi(dot per inch): 屏幕像素密度,每英寸的像素的个数。该值越大,屏幕的精细度越高,屏幕看起来越清楚。

10. @Override的使用

  @Override是伪代码,表示重写(当然不写也可以),不过写上有以下好处:

   ● 可以当注释用,方便阅读

   ● 编译器可以验证@Override下面的方法名是否是你父类中有的。如果没有,则报错

11. android系统的TouchEvent处理机制: android系统中的每个View的子类都具有如下三个与TouchEvent处理密切相关

的方法:

● public booleandispatchTouchEvent(MotionEvent ev): 用来分发TouchEvent,该MotionEvent能够记录触发点的坐标

● public booleanonInterceptTouchEvent(MotionEvent ev): 用来拦截TouchEvent

● public booleanonTouchEvent(MotionEvent ev): 用来处理TouchEvent事件

当TouchEvent发生时,Activity首先将TouchEvent传递给最顶层的View,TouchEvent最先到达最顶层view的dispatchTouchEvent,然后由该dispatchTouchEvent对TouchEvent进行分发,如果dispatchTouchEvent返回true,则交给这个view的onTouchEvent处理,如果dispatchTouchEvent返回false,则交给这个view的interceptTouchEvent方法来决定是否要拦截该事件,如果该interceptTouchEvent返回true,则交给它的onTouchEvent来处理,如果返回false,则传递给子view,由子view的dispatchTouchEvent再开始这个事件的分发。如果事件传递到某一层的子view的onTouchEvent上,该方法返回false,则该事件会从这个view往上传递,都是由onTouchEvent来接收。而如果传递到最上面的onTouchEvent也返回false,该事件便会消失,而且接收不到下一次事件。

12. Activity.finish()简介

该方法在Activity动作完成后,或者需要关闭Activity的时候被调用。当该方法被改用后,系统将最上面的Activity移出Task栈,但没有及时调用onDestory()方法,因而其占用的资源没有被及时释放。因为移出了栈,所以当点击手机上面的“back”按键时,不会再找到这个Activity。

13. AndroidWebViewClient与WebChromeClient的区别

  ● WebViewClient: 主要用于帮助WebView处理各种通知、请求事件。如: onLoadResource,onPageStart, onPageFinish, onReceiveError, onReceivedHttpAuthRequest

  ●WebChromeClient: 主要用于辅助WebView处理Javascript的对话框、网站title、加载进度等。如: onCloseWindow(关闭WebView), onCreateWindow,onJsAlert (WebView上alert无效,需要定制WebChromeClient处理弹出), onJsPrompt, onJsConfirm,onProgressChanged, onReceivedIcon, onReceivedTitle等。

  实际使用时,如果WebView只是用来处理一些html的页面内容,只用WebViewClient即可,如果需要更丰富的处理

效果,比如JS、进度条等,就要用到WebChromeClient。

14. WeakReference类

WeakReference weakref = new WeakReference(ref);
 这样 weakref 就是 ref 指向对象的一个 weakreference。要引用这个 weakreference 指向的对象可以用 get 方法。    把对象的 weak reference 放入 Hashtable 或者缓存中,当没有 strong reference 指向他们的时候,对象就可以被垃圾收集器回收了。实际上,有一个 WeakHashMap 就是专门做这个事的。一旦WeakReference使用get方法返回null的时候,它指向的对象已经变成了垃圾,这个weakref对象也没什么用 处了。这就需要有一些清理工作了。而ReferenceQueue类就是做这个的,要是你向ReferenceQueue类传递了一个 WeakReference的构造方法,那么当引用所指的对象成为垃圾时,这个引用的对象就会被自动插入到这个引用队列中。你可以在一定时间间隔内处理这个队列。

15. ViewStub组件

  ViewStub组件是一个隐藏的、不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当ViewStub可见,或者调用inflate()函数时,才会加载这个布局资源文件。该ViewStub在加载视图时在父容器中替换它本身。因此,ViewStub会一直存在于视图中,直到调用setVisibility(int) 或者inflate()为止。ViewStub的布局参数会随着加载的视图数一同被添加到ViewStub父容器。同样,你也可以通过使用 inflatedId属性来定义或重命名要加载的视图对象的Id值。当inflate()被调用, 这个ViewStub被加载的视图替代并且返回这个视图对象。这使得应用程序不需要额外执行findViewById()来获取加载视图的引用。

效果图如下:

  1).在ButtonOne和ButtonTwo之间存在一个ViewStub布局,如下图:

                                                                                                            

  2).单击ButtonOne后渲染ViewStub中的布局,如下图:

                                                                                                            

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI语言模型,我只能提供一些Android开发的基础知识和常用概念,希望对您有所帮助。 1. Android组成部分 Android操作系统由个主要组成部分组成:应用程序、应用程序框架、系统运行库和硬件抽象层。 2. Activity ActivityAndroid应用程序中的一个组件,用于表示应用程序中的一个屏幕。Activity可以包含用户界面元素,如文本框、按钮和图像。 3. Intent Intent是Android应用程序中的一个基本组件,用于在不同的组件之间传递数据。Intent可以用于启动Activity、启动服务、发送广播等。 4. 布局 布局是Android应用程序中用于定义用户界面的XML文件。布局文件定义了应用程序中的视图层次结构,包括文本框、按钮、图像等。 5. AndroidManifest.xml AndroidManifest.xml是Android应用程序中的一个必需文件,用于描述应用程序的基本信息。该文件包含应用程序的包名、应用程序的入口Activity、应用程序需要的权限等信息。 6. 生命周期 Android应用程序中的每个组件都有自己的生命周期,包括创建、启动、暂停和销毁。了解组件的生命周期可以帮助开发者更好地管理应用程序的资源。 7. 线程 Android应用程序中的线程用于执行长时间运行的操作,如下载文件或执行计算。但是,在主线程中执行长时间运行的操作会导致应用程序变得缓慢或停止响应,因此必须使用异步线程。 8. Service Service是Android应用程序中的一种组件,用于在后台执行长时间运行的操作。与Activity不同,Service没有用户界面,可以在后台执行。 9. 广播 广播是Android应用程序中的一种机制,用于在不同组件之间传递消息。广播可以用于通知应用程序中的其他组件,例如当设备电池电量低时,应用程序可以发送广播通知其他组件。 10. 内存管理 内存管理是Android应用程序中的一个重要方面。Android应用程序必须管理内存以确保应用程序能够正常运行,并避免出现内存泄漏和内存溢出等问题。可以使用垃圾回收器、使用合适的数据结构、避免创建不必要的对象等方法来管理内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值