Android 基础入门教程

660课时
525学过
8分

2. 基本 UI 控件

View与ViewGroup的概念

LinearLayout(线性布局)

weight(权重)属性详解

为LinearLayout设置分割线

LinearLayout的简单例子

LinearLayout注意事项

RelativeLayout(相对布局)

TableLayout(表格布局)

如何确定行数与列数

TableLayout三个常用属性

TableLayout使用实例

FrameLayout(帧布局)

FrameLayout常用属性

FrameLayout实例演示1

FrameLayout实例演示2

FrameLayout实例演示3

GridLayout(网格布局)

GridLayout使用实例

GridLayout用法归纳

AbsoluteLayout(绝对布局)

AbsoluteLayout使用示例

TextView(文本框)

TextView基础属性详解

TextView实例演示1

TextView实例演示2

TextView实例演示3

使用autoLink属性识别链接类型

TextView玩转HTML

SpannableString&SpannableStringBuilder定制文本

设置TextView字间距和行间距

TextView自动换行

EditText(输入框)

EditText设置默认提示文本

获得焦点后全选组件内所有文本内容

限制EditText输入类型

设置最小行、最多行和单行等

设置文字间隔和英文字母大写类型

控制EditText距离

设置EditText获得焦点

EditText光标位置的控制

带表情的EditText的简单实现

带删除按钮的EditText

Button(按钮)与ImageButton(图像按钮)

StateListDrawable简介

实现按钮的按下效果

使用颜色值绘制圆角按钮

实现Material Design水波效果的Button

ImageView(图像视图)

src属性和background属性的区别

adjustViewBounds设置缩放是否保存原图长宽比

scaleType设置缩放类型

最简单的绘制圆形的ImageView

RadioButton(单选按钮)&Checkbox(复选框)

RadioButton基本用法与事件处理

CheckBox基本用法与事件处理

自定义点击效果

改变文字与选择框的相对位置

修改文字与选择框的距离

开关按钮ToggleButton和开关Switch

ToggleButton核心属性讲解

Switch核心属性讲解

ToggleButton和Switch使用示例

ProgressBar(进度条)

ProgressBar常用属性讲解与基础实例

使用动画来替代圆形进度条

自定义圆形进度条

SeekBar(拖动条)

SeekBar基本用法

简单SeekBar定制

RatingBar(星级评分条)

RatingBar基本使用

RatingBar定制环节

ScrollView(滚动条)

Date & Time组件(上)

TextClock(文本时钟)

AnalogClock(模拟时钟)

Chronometer(计时器)

Date & Time组件(下)

DatePicker(日期选择器)

TimePicker(时间选择器)

CalendarView(日历视图)

Adapter基础讲解

MVC模式的简单理解

Adapter概念解析

Adapter代码示例

ListView简单使用

BaseAdapter优化

ListView的焦点问题

ListView之checkbox错位问题解决

ListView的数据更新问题

构建一个可复用的自定义BaseAdapter

ListView Item多布局的实现

GridView(网格视图)的基本使用

Spinner(列表选项框)的基本使用

AutoCompleteTextView(自动完成文本框)的基本使用

ExpandableListView(可折叠列表)的基本使用

ViewFlipper(翻转视图)的基本使用

Toast(吐司)的基本使用

Notification(状态栏通知)详解

AlertDialog(对话框)详解

其他几种常用对话框基本使用

PopupWindow(悬浮框)的基本使用

菜单(Menu)

ViewPager的简单使用

DrawerLayout(官方侧滑菜单)的简单使用

4. 四大控件

Activity初学乍练

Activity的概念与Activity的生命周期图

Activity/ActionBarActivity/AppCompatActivity的区别

Activity的创建流程

onCreate()一个参数和两个参数的区别

启动一个Activity的几种方式

横竖屏切换与状态保存的问题

系统给我们提供的常见的Activity

Activity初窥门径

Activity间的数据传递

多个Activity间的交互(后一个传回给前一个)

知晓当前是哪个Activity

随时关闭所有Activity

完全退出App的方法

双击退出程序的两种方法

为Activity设置过场动画

Bundle传递数据的限制

使用命令行查看当前所有Activity的命令

设置Activity全屏的方法

onWindowFocusChanged方法妙用

定义对话框风格的Activity

Activity登堂入室

Activity,Task和Back Stack的一些概念

Task的管理

Activity的四种加载模式详解

Activity拾遗

Service初涉

线程的相关概念

Service与Thread线程的区别

Service的生命周期图

生命周期解析

生命周期验证

Service进阶

IntentService的使用

Activity与Service通信

一个简单前台服务的实现

简单定时后台线程的实现

Service精通

IBinder和Binder是什么?

Binder机制浅析

为何Android使用Binder机制来实现进程间的通信?

AIDL是什么?

AIDL实现两个进程间的简单通信

AIDL实现两个进程间的简单通信-服务端

AIDL实现两个进程间的简单通信-客户端

传递复杂数据的AIDL Service

直接通过Binder的onTransact完成跨进程通信

Android 5.0后Service一些要注意的地方

BroadcastReceiver牛刀小试

BroadcastReceiver是什么?

两种广播类型

接收系统广播

发送广播

BroadcastReceiver庖丁解牛

本地广播

Android 4.3以上版本监听开机启动广播的问题解决

常用的系统广播总结

ContentProvider初探

ContentProvider概念讲解

使用系统提供的ContentProvider

自定义ContentProvider

通过ContentObserver监听ContentProvider的数据变化

ContentProvider再探:Document Provider

简单走下文档

Android 4.4 获取资源路径问题

Intent的基本使用

显式Intent与隐式Intent的区别

Intent的七个属性

显式Intent使用示例

隐式Intent详解

常用系统Intent合集

Action在哪里查?

Intent之复杂数据的传递

Intent传递简单数据

Intent传递数组

Intent传递集合

Intent传递对象

Intent传递Bitmap

定义全局数据

单例模式传参

7. 网络编程

Android网络编程要学的东西与Http协议学习

Android与互联网交互的三种方式

初识Http协议

什么是Http协议?

Http 1.0 与 Http 1.1的区别

Http协议的底层工作流程

Http协议的业务流程

Http的几种请求方式

Get和Post的对比

Http状态码合集

Http协议的特点

Android Http请求头与响应头

HTTP请求之消息头

HTTP响应之响应头

代码验证响应头的作用

Android HTTP请求方式:HttpURLConnection

HttpURLConnection的介绍

HttpURLConnection的使用步骤

HttpURLConnection使用示例

Cookie问题的处理

使用HttpURLConnection发送PUT请求

Android HTTP请求方式:HttpClient

HttpClient使用流程

HttpClient使用示例

HttpClient抓数据示例

使用HttpPut发送Put请求

Android XML数据解析

XML数据要点介绍

三种解析XML方法的比较

SAX解析XML数据

DOM解析XML数据

PULL解析XML数据

参考代码下载

Android JSON数据解析

Json是什么?

Json与XML的比较

Json的格式规范

Android给我们提供的Json解析类

Json字符串解析示例1

Json字符串解析示例2

Android 文件上传

项目用到的图片上传的关键方法

使用HttpConnection上传文件

Android 文件下载(1)

普通单线程下载文件

普通多线程下载

使用DownloadManager更新应用并覆盖安装

示例代码下载

Android 文件下载(2)

Android多线程断点下载的代码流程解析

Step 1:创建一个用来记录线程下载信息的表

Step 2:创建一个数据库操作类

Step 3:创建一个文件下载器类

Step 4:自定义一个下载线程类

Step 5:创建一个DownloadProgressListener接口监听下载进度

Step 6:编写我们的布局代码

Step 7:MainActivity的编写

Step 8:AndroidManifest.xml文件中添加相关权限

参考代码下载

Android 调用 WebService

WebService简介

去哪里获取WebService服务

第三方jar包的准备

获取相关的一些参数

注册并启用相关WEB服务

调用WebService的代码示例

参考代码下载

WebView(网页视图)基本用法

什么是WebView?

WebView相关方法

WebView常见需求1:根据URL加载网页

WebView常见需求2:滚动事件的监听

WebView常见需求3:滚动条的问题

WebView常见需求4:设置缩放以及自适应屏幕

WebView常见需求5:获取WebView的Cookie数据

WebView常见需求6:设置WebView的Cookie数据

示例代码下载

WebView和JavaScrip交互基础

核心步骤讲解

HTML通过JS显示Toast与普通列表的对话框

HTML通过JS调用三种不同的对话框

HTML通过JS读取Android联系人并显示

示例代码下载

Android 4.4后WebView的一些注意事项

多线程

线程阻塞

evaluateJavascript() 方法

处理WebView中url的跳转

UserAgent变化

使用addJavascriptInterface()的注意事项

Remote Debugging

N5读取联系人的问题解决

WebView文件下载

调用其它浏览器下载文件

自己写线程下载文件

WebView缓存问题

缓存的分类

为WebView开启缓存功能

删除WebView的缓存数据

示例代码下载

WebView处理网页返回的错误码信息

页面错误,加载自定义网页

页面错误,显示相应的View

示例代码下载

Socket学习网络基础准备

OSI七层网络模型浅析

TCP/IP四层模型

TCP/UDP区别讲解

Java中对于网络提供的几个关键类

基于TCP协议的Socket通信(1)

什么是Socket?

Socket通信模型

Socket服务端的编写

Socket客户端的编写

增强版案例:小猪简易聊天室

基于TCP协议的Socket通信(2)

运行效果图

实现流程图

代码示例

示例代码下载

基于UDP协议的Socket通信

服务端实现步骤

客户端实现步骤

8. 绘画与动画

Android中的13种Drawable小结 Part 1

Drawable资源使用注意事项

ColorDrawable

NiewPatchDrawable

ShapeDrawable

GradientDrawable

Android中的13种Drawable小结 Part 2

BitmapDrawable

InsetDrawable

ClipDrawable

RotateDrawable

AnimationDrawable

Android中的13种Drawable小结 Part 3

LayerDrawable

TransitionDrawable

LevelListDrawable

StateListDrawable

Bitmap(位图)全解析 Part 1

了解Bitmap,BitmapFactory,BitmapFacotry.Options

Bitmap常用方法

获取Bitmap位图

获取Bitmap的相关信息

抠图片上的某一角下来

使用Bitmap进行截屏

Bitmap引起的OOM问题

什么是OOM?为什么会引起OOM?

避免Bitmap引起的OOM技巧小结

及时回收图像

其他方法

三个绘图工具类详解

Paint(画笔)

Canvas(画布)

Path(路径)

动手试试

绘图类实战示例

Paint API之MaskFilter(面具)

BlurMaskFilter(模糊效果)

EmbossMaskFilter(浮雕效果)

注意事项

示例代码下载

Paint API之 Xfermode与PorterDuff详解(一)

AvoidXfermode

PixelXorXfermode

示例代码下载

Paint API之Xfermode与PorterDuff详解(二)

写个例子来验证前面的这个图

示例代码下载

Paint API之Xfermode与PorterDuff详解(三)

实现流程分析

代码实现

示例代码下载

Paint API之Xfermode与PorterDuff详解(四)

要实现的效果图以及实现流程分析

代码实现

示例代码下载

Paint API之ColorFilter(颜色过滤器)(1/3)

相关常识的普及

ColorMatrix的解读

写代码来验证ColorMatrix所起的作用

使用ColorMatrix的三个方法处理图像

示例代码下载

Paint API之ColorFilter(颜色过滤器)(2/3)

代码示例

示例代码下载

Paint API之ColorFilter(颜色过滤器)(3/3)

测试代码示例

示例代码下载

Paint API之PathEffect(路径效果)

子类作用与构造方法参数分析

写代码来验证各自的效果

示例代码下载

Paint API之Shader(图像渲染)

使用代码示例

示例代码下载

Paint几个枚举/常量值以及ShadowLayer阴影效果

get枚举用法

Paint.Style

Paint.Cap

Paint.Join

Paint.Align

Paint.FontMetrics和Paint.FontMetricsInt

ShadowLayer设置阴影效果

Paint API之Typeface(字型)

字体的可选风格

可选字体对象(Typeface)

自定义创建字型

使用代码示例

示例代码下载

Canvas API详解(Part 1)

translate(平移)

rotate(旋转)

scale(缩放)

skew(倾斜)

Canvas图层的概念以及save()和restore()详解

saveLayer()与restoreToCount()讲解

示例代码下载

Canvas API详解(Part 2)剪切方法合集

Region.Op组合方式详解

Region.Op使用实例

clipRect方法详解

clipPath方法详解

示例代码下载

Canvas API详解(Part 3)Matrix和drawBitmapMesh

Matrix中的几个常用的变换方法

Matrix使用示例

drawBitmapMesh扭曲图像

示例代码下载

Android动画合集之帧动画

帧动画概念以及用法

使用示例1

使用示例2

示例代码下载

Android动画合集之补间动画

补间动画的分类和Interpolator

各种动画的详细讲解

写个例子来体验下

动画状态的监听

为View动态设置动画效果

为Fragment设置过渡动画

为Activity设置过场动画

进入APP后登陆注册按钮从底部弹出动画效果

示例代码下载

Android动画合集之属性动画-初见

属性动画概念

ValueAnimator简单使用

ObjectAnimator简单使用

组合动画与AnimatorListener

使用XML来编写动画

示例代码下载

Android动画合集之属性动画-又见

Evaluator介绍

Evaluator使用示例

Evaluator示例增强版

Interpolator(补间器)

Interpolator的内部实现机制

自定义Interpolator

ViewPropertyAnimator

示例代码下载

10. 系统服务

TelephonyManager(电话管理器)

获得TelephonyManager的服务对象

调用拨号器拨打电话号码

获取Sim卡信息与网络信息

获取手机的信号强度

监听手机的所有来电

黑名单来电自动挂断

示例代码下载

SmsManager(短信管理器)

调用系统发送短信功能

调用系统提供的短信接口发送短信

AudioManager(音频管理器)

获得AudioManager对象实例

相关方法详解

使用示例

Vibrator(振动器)

获得Vibrator实例

可以使用的相关方法

使用示例:设置频率不同的震动器

示例代码下载

AlarmManager(闹钟服务)

Timer类与AlarmManager类区别

获得AlarmManager实例对象

相关方法讲解

使用示例:一个简单的定时任务

代码示例下载

PowerManager(电源服务)

PowerManager是什么

wakelock锁介绍

PowerManager怎么用

需要的权限

WindowManager(窗口管理服务)

WindowManager介绍

如何获得WindowManager实例

WindowManager使用实例1

WindowManager使用实例2

WindowManager使用实例3

WindowManager使用实例4

代码示例下载

LayoutInflater(布局服务)

Layout是什么?

LayoutInflater的用法

纯Java代码加载布局

纯Java代码加载布局的流程

Java代码动态添加控件或xml布局

LayoutInflater的inflate()方法源码

WallpaperManager(壁纸管理器)

WallpaperManager的基本用法

调用系统自带的壁纸选择功能

将Activity的背景设置为壁纸背景

定时换壁纸的Demo

示例代码下载

传感器专题1:相关介绍

如何查看自己手机所支持的传感器有哪些?

Sensor传感器相关的方法以及使用套路

示例代码下载

传感器专题2:方向传感器

三维坐标系的概念

方向传感器的三个值

简单的Demo帮助我们理解三个值的变化

一个简易版的文字指南针示例

示例代码下载

传感器专题3:加速度/陀螺仪传感器

加速度传感器(Accelerometer sensor)

简易计步器的实现

陀螺仪传感器(Gyroscope sensor)

示例代码下载

传感器专题4:其他传感器了解

磁场传感器(Magnetic field sensor)

距离传感器(Proximity sensor)

光线传感器(Light sensor)

气压传感器(Pressure sensor)

温度传感器(Temperature sensor)

传感器模拟工具:SensorSimulator

Android GPS初涉

定位相关的一些API

获取LocationProvider的例子

判断GPS是否打开以及打开GPS的两种方式

动态获取位置信息

临近警告(地理围栏)

示例代码下载

课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
20分钟

Git使用教程之本地仓库的基本操作

Git是什么?

一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样 我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器 ②Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,我们可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理服务器出问题了,我们依然能继续写自己的代码,当他恢复的时候我们再提交我们的本地版本! Git研发初期是为了更好的管理Linux内核,不过现在已经广泛应用于各种项目中!

安装Git

如果你的系统是Linux的话,直接打开shell输入:

sudo apt-get install git

当然,大部分的系统估计都是Windows,这就需要我们到网上下载一个Git For Window了,可到下述网站下载: https://git-for-windows.github.io/ 点击 Download,跳转到 Github ,下载对应安装包即可!

点击后进入页面,下载如下文件即可

或者直接下载目前最新版2.7.0: v2.7.0.windows.1 接着傻瓜式的下一步就可以了~ 接下来你可以找到Git Gui然后开始玩Git,不过如果以后换到其他平台上,没有图形化界面你就寸步难行了! So,如果你有兴趣的话,我们来玩命令行,以后换了系统也能正常的玩Git!

玩转Git命令行

当然Git肯定是搭配着GitHub玩才够味的,不过先来学习一些本地的指令先把! 当你安装完Git后我们可以在任意位置右键,点击Git bash打开我们的Git命令行! 你可以可以点击Git Init Here直接在当前目录下创建一个代码仓库,又或者点击Git Gui打开Gui的图形操作页面!


1.创建代码仓库

Step 1:先配置下我们的身份吧,这样在提交代码的时候Git就可以知道是谁提交的,命令如下:

git config --global user.name "coder-pig"
git config --global user.email "779878443@qq.com"

配置完成后,我们可以再次输入,不包括名称,可以看到我们已经配置成功了

Step 2:找个地方创建我们的代码仓库,然后我创建了一个新的项目:TestForGit,来到工程的目录下,右键,打开我们的Git Bash,键入下述指令完成代码仓库的建立!另外这个代码仓库其实是用来保存版本管理所需的一些信息,我们本地提交的代码都会提交到代码仓库中,于是乎我们可以选择还原到某个版本,当然,如果需要的话,我们还可以将保存在代码仓库中的代码推送那个到远程仓库中!比如GitHub!

git init

一个简单的代码,代码仓库就创建完毕了!继续输入:ls - al可以看到下目录下有个.git的文件夹就是他了!

也可以打开工程目录,同样看也看到.git文件夹;如果我们想删除代码仓库只需把这个文件夹删掉即可!


2.提交本地代码

创建完代码仓库,接下来说下如何提交代码,我们是先用add命令把要提交的内容都加进来,然后commit才是真的去执行提交操作!命令例子如下,你可以一次次慢慢添加,当然也可以全部提交,直接git add .即可完成! 我们现在工程目录下创建一个readme.txt的文件试试,随便写点东西,然后依次输入下述指令:

 git add readme.txt
 git commit -m "Wrote a readme file"

输入命令试试:

当然如果你可以add多个文件后再一次性commit,不过如果我们改动的文件很多的话,我们可以git add .一次添加全部,但有一些是几百年都不变一次的又或者自动生成的,比如lib,gen,bin文件夹等等,我们可以在代码仓库的根目录下创建一个名为.gitignore的文件,然后编辑里面的内容,把不需提交的文件忽略掉!

接着输入要提交时忽略的文件内容即可!

那么我们git add .的时候,这里的文件就不会add,另外可能你会觉的commit后面写-m "xxx"很麻烦,想偷懒,但还是写上吧!输入的是本次提交的一些声明,比如自己修改了些什么!就好像写代码的时候,你偷懒不写注释,过几天你连自己写的什么鬼都不知道...


3.查看修改内容

好吧,前面我们用git add提交了整个项目到本地仓库,接下来我们改点东西,然后使用git status可以查看 修改的部分,比如,我们删掉MainActivity.java里的菜单的代码以及多余的菜单相关的包!

他就会提示我们哪些文件发生了改变,但是还没有提交,如果我们想看下具体更改了什么,我们可以用到git diff命令,另外,按Q可以退回命令行输入!


4.查看提交记录

当然随着我们项目的深入,Commit的次数也会越来越多,可能你早已忘记每次提交都修改了什么内容, 没事,Git帮你记着呢,使用git log即可查看历史提交信息!键入

git log

回车:

我们取其中一小部分来分析:

commit defd8af52be5183dfceb3e5cf23f78ea47d013b0
Author: coder-pig <779878443@qq.com>
Date:   Fri Jun 19 17:00:36 2015 +0800
MainActivity Delete Menu

依次是:

  • 此次提交对应的版本号
  • 提交人:姓名 邮箱
  • 提交的时间
  • 提交版本修改的内容:就是我们commit -m "xxx"里的xxx

5.撤销未提交的修改

比如我们刚提交了一个版本,然后又乱七八糟地写了一堆东西,突然发现不小心误删了一些东西,然后ctrl + s保存了,这个时候是不是欲哭无泪,不过有Git,只需一个checkout命令即可撤销更改,当然是你还没add的情况,比如我们在MainActivity里随便添加一条语句,然后ctrl + s保存代码!

然后命令行键入:git diff:

嗯,这里可以看到我们改的内容,我们可以回去把这句代码删掉,但是如果改的有上千行你怎么改, 于是乎这个时候我们可以使用

git checkout src/com/jay/example/testforgit/MainActivity.java

然后会神奇的发现,我们新写的代码没了!duang一下就没了,不信你可以自己试试

当然,如果我们已经add了的话,那么checkout是没任何作用的,我们要先取消添加才可以撤回提交,使用下述指令:

git reset HEAD src/com/jay/example/testforgit/MainActivity.java
git checkout src/com/jay/example/testforgit/MainActivity.java

6.版本回退

第五点我们教了大家撤销未提交的修改,但加入提交了,我们想回退到之前的某一个版本怎么办? 第四点中我们可以通过git log查看我们的提交记录,我们需要从这里获取一个版本号, 一般我们只需要前七位字符就够了;另外在Git中,用HEAD代表当前版本,上一个版本就是HEAD^, 再上一个版本就是HEAD^^依次类推!我们先Git Log看下版本历史先!

我们回到前一个提交的版本吧,依次键入下述指令:

 git reset --hard HEAD
 git reset --hard HEAD^
 git log

这时看下我们的控制台:

可以看到我们已经回退到了前一个版本了,当然你可以直接这样写:

git reset --hard ad2080c

就是这么简单!回退后,你突然后悔了,想回退回新的那个版本, 可是遗憾的是,你键入git log却发现没有了最新的那个版本号,这怎么办呢... 没事,Git中给你提供了这颗"后悔药",Git记录着你输入的每一条指令呢!键入:

git reflog

你会发现,版本号就在这里:

然后键入:

git reset --hard ad2080c

可以看到我们又回到了最新的那个版本了,就是这么溜!

7.本节小节

本节给大家介绍了项目管理工具Git来管理我们的本地仓库,学习了一些基本的命令行操作,相信会给你的项目开发带来便利,当然本地远远是不够的,下一节我们将学习如何将我们的项目托管到GitHub上!敬请期待~