安卓学习笔记

1.Log.v() 这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是 Android日志里面级别最低的一种。

2.Log.d() 这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别 debug,比 verbose高一级。

3.Log.i() 这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为的那种。对应级别 info,比 debug高一级。

4.Log.w() 这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别 warn,比 info高一级。

5.Log.e() 这个方法用于打印程序中的错误信息,比如程序进入到了 catch语句当中。当有错 误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级 别 error,比 warn高一级。

为什么使用 Log而不使用 System.out

我相信很多的 Java新手都非常喜欢使用 System.out.println()方法来打印日志,不知道你是不是也喜欢这么做。不过在真正的项目开发中,是极度不建议使用 System.out.println()方 法的!如果你在公司的项目中经常使用这个方法,就很有可能要挨骂了。为什么 System.out.println()方法会这么遭大家唾弃呢?经过我仔细分析之后,发现这个 方法除了使用方便一点之外,其他就一无是处了。方便在哪儿呢?在 Eclipse中你只需要输 入 syso,然后按下代码提示键,这个方法就会自动出来了,相信这也是很多 Java新手对它 钟情的原因。那缺点又在哪儿了呢?这个就太多了,比如日志打印不可控制、打印时间无法 确定、不能添加过滤器、日志没有级别区分……听我说了这些,你可能已经不太想用 System.out.println()方法了,那么 Log就把上面所 说的缺点全部都做好了吗?虽然谈不上全部,但我觉得 Log已经做得相当不错了。我现在就来带你看看 Log和 LogCat配合的强大之处。

 

 

当前我们选中的级别是 verbose,也就是最低等级。这意味着不管我们使用哪一个方法 打印日志,这条日志都一定会显示出来。而如果我们将级别选中为 debug,这时只有我们使 用 debug及以上级别方法打印的日志才会显示出来,以此类推。你可以做下试验,如果你把 LogCat中的级别选中为 info、warn或者 error时,我们在 onCreate()方法中打印的语句是不会 显示的,因为我们打印日志时使用的是 Log.d()方法。

 

 

活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件, 主要用于和用户进行交互

2.2.4 隐藏标题栏

标题栏中可以进行的操作其实还是蛮多的,尤其是在 Android4.0之后加入了 ActionBar 的功能。不过有些人会觉得标题栏相当占用屏幕空间,使得内容区域变小,因此也有不少的应用程序会选择将标题栏隐藏掉。 隐藏的方法非常简单,打开 FirstActivity,

onCreate()方法中添加如下代码: requestWindowFeature(Window.FEATURE_NO_TITLE);

 

Toast的用法非常简单,通过静态方法makeText()创建出一个Toast对象,然后调用show() 将Toast显示出来就可以了。这里需要注意的是,makeText()方法需要传入三个参数。第一 个参数是 Context,也就是 Toast要求的上下文,由于活动本身就是一个 Context对象,因此 这里直接传入FirstActivity.this即可。第二个参数是Toast显示的文本内容,第三个参数是Toast 显示的时长,有两个内置常量可以选择 Toast.LENGTH_SHORT和 Toast.LENGTH_LONG。

 

通过 getMenuInflater()方法能够得到 MenuInflater对象,再调用它的inflate()方法就可以给 当前活动创建菜单了。inflate()方法接收两个参数,第一个参数用于指定我们通过哪一个资源 文件来创建菜单,这里当然传入R.menu.main,第二个参数用于指定我们的菜单项将添加到哪 一个Menu对象当中,这里直接使用onCreateOptionsMenu()方法中传入的 menu参数。然后给这个方法返回true,表示允许创建的菜单显示出来,如果返回了false,创建的菜单将无法显示。

 

2.2.7 销毁一个活动

通过一整节的学习,你已经掌握了手动创建活动的方法,并学会了如何在活动中创建 Toast和创建菜单。或许你现在心中会有个疑惑,如何销毁一个活动呢? 其实答案非常简单,只要按一下 Back键就可以销毁当前的活动了。不过如果你不想通 过按键的方式,而是希望在程序中通过代码来销毁活动,当然也可以,Activity类提供了一 个 finish()方法,我们在活动中调用一下这个方法就可以销毁当前活动了。修改按钮监听器中的代码,如下所示: button1.setOnClickListener(newOnClickListener() { @Override public void onClick(View v) { finish(); } }); 重新运行程序,这时点击一下按钮,当前的活动就被成功销毁了,效果和按下 Back键 是一样的。

 

相比于显式 Intent,隐式 Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的 action和 category等信息,然后交由系统去分析这个 Intent,并帮我们找出合适的活动去启动。什么叫做合适的活动呢?简单来说就是可以响应我们这个隐式 Intent的活动,那么目前SecondActivity 可以响应什么样的隐式 Intent 呢?额,现在好像还什么都响应不了,不过很快就会有了。通过在<activity>标签下配置<intent-filter>的内容,可以指定当前活动能够响应的action和 category,打开AndroidManifest.xml,

 

这里我们还是使用显式 Intent 的方式来启动 SecondActivity,并通过 putExtra()方法传递了一个字符串。注意这里 putExtra()方法接收两个参数,第一个参数是键,用于后面从 Intent中取值,第二个参数才是真正要传递的数据

2.4.5 活动被回收了怎么办

前面我们已经说过,当一个活动进入到了停止状态,是有可能被系统回收的。那么想象

以下场景,应用中有一个活动 A,用户在活动 A 的基础上启动了活动B,活动 A 就进入了停止状态,这个时候由于系统内存不足,将活动 A 回收掉了,然后用户按下 Back 键返回活动A, 会出现什么情况呢?其实还是会正常显示活动 A的, 只不过这时并不会执行 onRestart()方法,而是会执行活动 A 的 onCreate()方法,因为活动 A 在这种情况下会被重新创建一次。这样看上去好像一切正常,可是别忽略了一个重要问题, 活动 A 中是可能存在临时数据和状态的。打个比方,MainActivity 中有一个文本输入框,现在你输入了一段文字,然后启动NormalActivity,这时 MainActivity 由于系统内存不足被回收掉,过了一会你又点击了Back 键回到 MainActivity,你会发现刚刚输入的文字全部都没了,因为 MainActivity 被重新创建了。

Activity中还提供了一个onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。

活动的启动模式

活动的启动模式对你来说应该是个全新的概念,在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式。启动模式一共有四种,分别是 standard、singleTop、

singleTask和singleInstance,可 以在 AndroidManifest.xml 中通 过给<activity> 标签 指定android:launchMode属性来选择启动模式。下面我们来逐个进行学习。

android:textSize="24sp"

这时你可能会问,旋转的进度条表明我们的程序正在加载数据,那数据总会有加载完的

时候吧,如何才能让进度条在数据加载完成时消失呢?这里我们就需要用到一个新的知识点, Android控件的可见属性。 所有的Android控件都具有这个属性,可以通过android:visibility进行指定,可选值有三种,visible、invisible 和 gone。visible表示控件是可见的,这个值是默认值,不指定 android:visibility 时,控件都是可见的。invisible 表示控件不可见,但是它仍然占据着原来的位置和大小, 可以理解成控件变成透明状态了。 gone 则表示控件不仅不可见,而且不再占用任何屏幕空间。我们还可以通过代码来设置控件的可见性,使用的是setVisibility()方法,可以传入 View.VISIBLE、View.INVISIBLE 和 View.GONE 三种值。

 

在布局文件中指定宽高的固定大小有以下常用单位可供

选择:px、pt、dp 和 sp

px 是像素的意思,即屏幕中可以显示的最小元素单元,我们应用里任何可见的东西都

是由一个个像素点组成的。单独一个像素点非常的微小,肉眼是无法看见的,可是当许许多

多的像素点聚集到一起时,就可以拼接成五彩缤纷的图案。

pt 是磅数的意思,1 磅等于 1/72 英寸,一般 pt 都会作为字体的单位来使用

dp 是密度无关像素的意思,也被称作 dip,和px 相比,它在不同密度的屏幕中的显示比

例将保持一致。

sp 是可伸缩像素的意思,它采用了和 dp 同样的设计理念,解决了文字大小的适配问题。

标准广播(Normal broadcasts)

有序广播(Orderedbroadcasts)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值