
第一行代码学习
本专栏为学习郭霖老师《第一行代码》的心路历程的记录,同时还记录一些在学习过程中的问题和解决方法。
林克在思考
一个喜欢折腾技术的开发者
展开
-
《第一行代码》综合案例改进版
经过一端相对较长的时间,终于将郭大神的《第一行代码》看完了,亲自实践了书中所有的大小案例,以及git的使用,当然还补充学习了一些和书中内容相关的扩展知识,以及廖雪峰老师官网的git教程,关于《第一行代码》的学习也都在博客上有所记录,并且对其中的有些已经过时的方法也写了一点自己的看法,最后就是实践书最后面的小例子《酷欧天气》。原创 2016-09-29 15:51:50 · 1390 阅读 · 0 评论 -
Android中使用HttpConnection发送中文到服务器端乱码解决办法
最近在写一个简单地案例,是将二维码扫描的信息发送到服务器端,并存储到数据库。以前的测试都是用英文,没出什么问题,今天试了一下中文,却发现传到服务器端的全是乱码。 解决步骤: 1、服务器端是用PHP来写,所以在保证文件保存为utf-8格式的前提下,在加上头声明:header("Content-type: text/html; charset=utf-8"); 可乱码依旧,将服务器端获取到的乱码拿原创 2016-05-22 21:40:41 · 2628 阅读 · 0 评论 -
requestWindowFeature(Window.FEATURE_NO_TITLE)无效解决方法
今天在《第一行代码》上学习做自定义标题栏,需要将系统自带的标题栏隐藏掉,使用自定义的标题栏,结果发现,requestWindowFeature(Window.FEATURE_NO_TITLE); 这句代码无效,标题栏无法隐藏,可我以前都可以隐藏啊,今天怎么不可以了,最终发现是Activity的继承问题,我的代码是这样的public class TitlebarActivity extends App原创 2016-06-18 17:28:03 · 27297 阅读 · 18 评论 -
Android中ListView的使用(一)----- 简单填充数据
在Android开发中,ListView是我们最常用但也是最难用的控件,这一篇将介绍ListView的最简单用法。 一、在布局文件中加入LIstView控件。新建activity_my_list_view.xml文件,代码如下 activity_my_list_view.xml文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xml原创 2016-06-18 19:07:53 · 6496 阅读 · 0 评论 -
Android中ListView的使用(二)----- 定制ListView的界面
上一篇中我们的ListView中只是简单的显示了一段文本,这一篇,将通过定制ListView的子项的样式来显示更丰富的内容。原创 2016-06-18 20:54:19 · 1530 阅读 · 0 评论 -
Android中ListView的使用(三)----- 提升ListView运行效率
在上一篇在,我们虽然实现了ListView的显示,但是,它的运行效率是极低的由于数据较少,看不出差别,当数据量较大,或者ListView快速滚动时,FruitAdapter中的getView()每次都将布局重新加载一遍,这将会变成ListView性能的瓶颈,下面的内容将会修改优化上一篇中的代码。 在getView()方法中,有一个convertView参数,这个参数用于将之前加载好的布局进行缓存原创 2016-06-18 21:14:07 · 691 阅读 · 0 评论 -
Android数据解析-----解析xml数据
我们在开发Android应用的过程中难免会与网络请求接触,网路请求获得的数据一般都是有一定的格式或者约定的形式来返回,这时候我们就需要对返回的数据进行解析,然后从中提取出我们需要呈现在界面上的数据,一般我们遇到的最常见的两种便于网络传输的数据类型便是xml和json,下面就详细介绍一下有关他们的解析方式。原创 2016-09-09 22:27:27 · 713 阅读 · 0 评论 -
一个Android项目中各目录介绍
对于一个Android项目,一般有如下几个文件夹:src目录 该目录是放我们所有的java代码的地方,里面都是一些.java文件 gen目录 该目录里面的内容都是自动生成的,主要有一个R.java文件,里面存储的是你在项目中添加的资源所对应的id,千万不要手动去修改 assets目录 该目录主要放置一些随程序一起打包的文件,在 程序运行时可以动态读取里面的内容,或者是程序中用到了W原创 2016-06-15 10:33:11 · 3758 阅读 · 0 评论 -
Android中Intent介绍
Android中Intent主要分为显式Intent和隐式Intent,今天会主要讲隐式Intent 一、显式Intent 最常用的就是下面这种形式Intent intent = new Intent(FirstActivity.this, Second.class);startActivity(intent);二、隐式Intent 这种Intent方式主要是通过action和categor原创 2016-06-15 20:59:55 · 841 阅读 · 0 评论 -
动态添加Fragment的步骤
Fragment是一种可以嵌入Activity中的UI片段,我们可以通过以下几步,实现Fragment的动态添加。 1、创建待添加的碎片实例 2、在活动中直接调用getFragmentManager()方法获取到FragmentManager 3、 通过调用beginTransaction()方法开启一个事务 4、向容器内加入碎片,一般使用replace()方法实现,需要传入容器的id和待原创 2016-06-21 21:37:27 · 1619 阅读 · 0 评论 -
活动的生命周期
一、活动状态 每个活动在其生命周期中最多可能会有四种状态1 . 运行状态 当一个活动处于返回栈的栈顶时,此时活动处于运行状态,系统最不愿意回收的就是这种状态的活动。2 . 暂停状态 当一个活动不再处于栈顶的位置,但仍然可见时,这种活动就进入了暂停状态,比如一个显示一个对话框,对话框并不会占满整个屏幕,处于对话框下的活动仍然是可见的。处于暂停状态的活动仍然是安全存活着的,系统也不愿意原创 2016-06-23 20:43:58 · 1165 阅读 · 0 评论 -
Android中WebView使用详解
WebView是Android中一个用于展示网页的控件,我们借助于这个控件可以简单的实现在Android应用中展示自己的网页。同时还能实现一些高级的功能。原创 2016-08-28 21:53:15 · 1137 阅读 · 0 评论 -
Android异步处理之AsyncTask
为了让我们在子线程中更简单地更新UI,Android给我们封装了一个抽象类AsyncTask,我们在使用时可以继承这个类并且还可以为其制定三个泛型参数,下面是这三 1、Params —— 在执行AsyncTask的实例时需要传入的参数,可用于在后台任务中使用。2、Progress —— 在执行后台任务时,如果需要显示当前任务执行的进度,可以使用这里指定的泛型作为进度单位。原创 2016-09-06 20:20:05 · 496 阅读 · 0 评论 -
Android中的服务Service的使用
服务是Android中实现程序后台运行的解决方案,服务的运行不依赖与任何用户界面,所以它非常适合于去执行那些不需要和用户交互且需要长期运行的任务。但是我们要注意一点,服务不是运行在一个独立的进程中,而是依赖于创建服务的应用程序进程,当某个应用程序被杀死时,依赖此应用程序创建的服务也会停止运行。原创 2016-09-06 22:06:48 · 838 阅读 · 0 评论 -
Android播放音频和视频
今天的博客记录一下在Android设备上播放简单的音频和视频原创 2016-08-23 17:10:00 · 1186 阅读 · 0 评论 -
Android拍照或从图库选择图片并裁剪
今天看《第一行代码》上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo。原创 2016-08-22 23:59:13 · 4652 阅读 · 5 评论 -
Android中使用通知Notification
每个使用Android手机的人应该对Android中的通知不陌生,下面我们就学习一下怎么使用Android中的通知。一、通知的基本用法 活动、广播接收器和服务中都可以创建通知,由于我们一般在程序进入后台后才使用通知,所以真实场景中,一般很少在活动中创建通知。1、第一行代码上面介绍的创建通知的方法//获得通知管理器NotificationManager manager = (Notifica原创 2016-08-20 17:52:14 · 1500 阅读 · 2 评论 -
Android接收和发送短信
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。一、接收短信1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在Activity中注册广播 4、添加接收短信权限 下面放上具体的代码activity_main.xml文件用于显示短信发送者号码和显示短信内容<?xml version="1.0" encodin原创 2016-08-21 22:31:20 · 2193 阅读 · 0 评论 -
Android如何在广播接收器中启动活动和弹出对话框
1 . 在onReceiver()方法中启动活动,必须添加这句 intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 2 . 在onReceiver()中弹出对话框(警告框),必须设置对话框的类型,并添加相应权限。 alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE原创 2016-06-24 22:26:55 · 4019 阅读 · 4 评论 -
Android中的广播机制(二)----- 发送广播
这一篇中我们将介绍发送标准广播,有序广播和本地广播的使用。原创 2016-06-24 17:27:19 · 1008 阅读 · 0 评论 -
Android中的广播机制(一)----- 接收广播
Android中的广播主要包括两种类型:标准广播和有序广播。 标准广播标准广播是一种完全异步执行的广播。在广播发出之后,所有广播接收器几乎是在同一时刻收到广播消息,他们之间没有任何先后顺序。这种广播的效率比较高,但同时也意味着这种广播无法被截断。 有序广播有序广播是一种同步执行的广播,在广播发出去之后,同一时刻只会有一个广播接收器收到这条消息,当这个广播接收器中的逻辑执行完毕后,广播会继原创 2016-06-24 16:03:16 · 1485 阅读 · 0 评论 -
Android中的数据存储(一)----- 文件存储
Android中的文件存储是最基本的一种数据存储方式,它不对存储的数据进行任何的格式化处理,所有的数据都是原封不动地保存到文件当中,适合存储一些简单的文本数据或二进制数据。 Context类中提供了openFileOutput()方法和openFileInput()方法,用于将数据存储到指定的文件夹和从指定文件读取数据。 一、openFileOutput()方法该方法接受两个参数,第一个参数原创 2016-06-25 15:33:17 · 929 阅读 · 0 评论 -
Android数据存储(二)----- SharedPreferences存储
SharePreferences是使用键值对的方式来存储数据的,而且SharePreferences还支持多种不同的数据类型存储。 一、获得SharePreferences对象(三种方法)1 . Context类中的getSharePreferences()方法 该方法接受两个参数,第一个参数用来指定SharePreferences文件的名称,如果指定的文件不存在则会创建一个。第二个参数是原创 2016-06-25 19:32:46 · 781 阅读 · 0 评论 -
Android使用transaction.addToBackStack(null)加入返回栈无效
最近在看郭大神《第一行代码》上的碎片介绍,照着书上敲了transaction.addToBackStack(null)将事务加入返回栈,可是发现,点返回还是直接退出,不会返回到上一个碎片,Google半天中呼吁找到答案。先放上我原来的代码public class MainActivity extends AppCompatActivity implements View.OnClickListene原创 2016-06-21 22:11:10 · 7619 阅读 · 5 评论 -
Android中Activity的启动模式
1、standard模式 这是活动默认的启动模式,特点是:每启动一个新的活动,就会在返回栈中入栈,并处于栈顶的位置,系统不会在乎某个活动是否已经在返回栈中存在每次启动都会创建该活动的一个新的实例2、singleTop模式 特点如下:在启动活动时如果发现返回栈的栈顶已经是该活动,就会直接使用,不会再创建新的活动实例。3、singleTask模式 特点如下:每次启动活动时都会检查返回栈中原创 2016-06-15 22:29:46 · 650 阅读 · 0 评论 -
碎片的生命周期
一、碎片的状态1 . 运行状态 当一个碎片是可见的,并且它所关联的活动正处于 运行状态时,该碎片处于运行状态。2 . 暂停状态 由于另一个未占满屏幕的活动被添加到栈顶时,原来的活动便处于暂停状态,它所关联的可见碎片便会进入暂停状态。3 . 停止状态 当一个活动处于停止状态时,与它相关联的碎片便会进入停止状态。或者通过调用FragmentTransaction的remove()、rep原创 2016-06-23 21:30:22 · 1240 阅读 · 0 评论 -
Android数据存储(三)----- SQLite数据库存储
SQLite是Android系统内置的数据库,是一种轻量级的关系型数据库,它运算速度快,占用资源少,非常适合在移动设备上使用。同时,它不仅支持标准的SQL语法,还遵循了数据库的ACID事务。原创 2016-07-06 21:48:12 · 2482 阅读 · 0 评论 -
Android中SQLite使用事务
SQLite数据库是支持事务的,事务的特性可以保证让一系列的操作要么全部完成,要么全部不完成。举一个简单地例子—–转账,银行会先从你账户中扣除一定的金额,然后再在对方账户中加入相应的金额。这两个步骤要么都成功,要么都不成功,这便是事务的使用场合 。原创 2016-07-09 00:06:36 · 1441 阅读 · 0 评论 -
Android组件----内容提供器Content Provider
内容提供器(Content Provider)主要用于在不同的应用程序之间共享数据,虽然Android提供的文件存储和SharePreferences都可以设置全局读写模式共享数据,但由于安全性问题,已经在Android4.2中被废弃。内容提供器将提供一种安全的数据共享方式。当一个程序通过内容提供器提供了韦布访问接口,其他任何程序都可以通过该接口来对这部分数据进行访问,例如:联系人数据,短信数据。原创 2016-07-11 15:03:35 · 1931 阅读 · 0 评论