安卓看着很庞大,知识点众多,我们只学项目中用的到的,不懂得,边学边用才是王道!前提是————JAVA基础要犀利!!!和要有点美学常识,熟悉MVC会快点,当然JAVA EE开发的转安卓非常非常快,留着总结存档,还没学完...
基础:
—————————————————————————————
1:第一课:Android开发环境搭建
2:第二课:模拟器的使用
3:第三课:第一个Android程序 HelloActivity
HelloActivity分析:该类继承Activity类,每一个Activity对象是一个单独的实体,在我们的应用程序中可能会有多个Activity,但是每次只有一个能展现在用户面前。
onCreate()将会在Activity运行时被Android系统调用,因此在这里我们需要把我们的初始化信息处理完毕:构建UI界面、加载资源文件等。
4:第四课:TextView控件学习
TextView控件介绍:
TextView控件能向用户展现文本信息,我们可以自己设置该文本信息是否能够编辑。但是我们本节课学习的一个基类,该类是不允许我们编辑文本信息。
TextView基本使用:
1.在程序中创建TextView对象
2.在XML布局文件中使用
TextView属性:
设置字体的大小推荐使用sp作为单位
设置宽度或高度等属性时推荐使用dp(dip)作为单位
改变Textview字体颜色:
android:textColor设置文本颜色
设置超链:
android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
跑马灯效果:
android:ellipsize设置当文字过长时,该控件该如何显示。有如下值设置:”start”—-省略号显示在开头;”end” ——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动)
android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。
android:focusableInTouchMode:是否在触摸模式下获得焦点。
android:focusable控件是否能够获取焦点
5:第五课:EditText控件学习
1:什么是EditText?——用户输入信息
2:怎么移除EditText上的输入焦点————自己百度看博客
3:限制输入字符数量?——android:maxLength="3"
4:多行文本框——android:singleLine="false"
5:限制EditText输入信息——android:inputType="number"
6:设置提示信息——android:hint="我是EditText"
7在EditText中显示图片——android:drawableLeft="@drawable/title"
8:设置圆角———android:background="@drawable/shape" (需要自己新建xml文件定义)
6:第六课:DDMS视图和Button
1:认识Button——按钮,你懂的
2:给Button添加事件——自己百度相关博客
7:第七课:Intent初级学习
1:什么是Intent?——An intent is an abstract description of an operationto be performed一个Intent就是一次对将要执行的操作的抽象描述(说白点,你想干嘛)。
2:拨打电话
<Intentintent=newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+telPhone))//;>
<uses-permissionandroid:name="android.permission.CALL_PHONE"/>
3:发送短信
Intentintent=new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto:5554"));
intent.putExtra("sms_body","Hello");
startActivity(intent);
<uses-permissionandroid:name="android.permission.SEND_SMS"/>
启动新的Activity————百度
传递参数——百度
返回参数——百度
8:第八课:Activity生命周期
1:Log类简单的使用
Log.v(String tag,String msg); //VERBOSE
Log.d(String tag,String msg); //DEBUG
Log.i(String tag,String msg); //INFO
Log.w(String tag,String msg); //WARN
Log.e(String tag,String msg); //ERROR:
2:Activity生命周期
protected voidonCreate(Bundle savedInstanceState);
protected voidonStart();
protected voidonRestart();
protected voidonResume();
protected voidonPause();
protected void onStop();
protected voidonDestroy();
9:第九课:Activity高级学习
1:保存Activity状态
onSaveInstanceState()
2:android:theme
•android:theme="@android:style/Theme.Dialog"
•android:theme="@android:style/Theme.NoTitleBar"
•android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
•android:theme="Theme.Light"
•android:theme="Theme.Light.NoTitleBar"
•android:theme="Theme.Light.NoTitleBar.Fullscreen"
•android:theme="Theme.Black"
•android:theme="Theme.Black.NoTitleBar"
android:theme="Theme.Black.NoTitleBar.Fullscreen
3:android:theme
• android:theme="Theme.Wallpaper"
• android:theme="Theme.Wallpaper.NoTitleBar"
• android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen"
• android:theme="Translucent"
• android:theme="Theme.Translucent.NoTitleBar"
• android:theme="Theme.Translucent.NoTitleBar.Fullscreen"
• android:theme="Theme.Panel"
• android:theme="Theme.Light.Panel"
—————————————————————————————
布局:
10:第十课:LinearLayout学习
1:什么是LinearLayout?
线性布局是程序中最常见的一种布局方式,线性布局可以分为水平线性布局和垂直线性布局两种,通过android:orientation属性可以设置线性布局的方向
2:android:gravity
该属性用于控制布局中控件的对齐方式。如果是没有子控件的控件设置此属性,表示其内容的对齐方式,比如说TextView里面文字的对齐方式;若是有子控件的控件设置此属性,则表示其子控件的对齐方式
3:android:layout_weight
通过设置控件的layout_weight属性以控制各个控件在布局中的相对大小。layout_weight属性是一个非负整数值。线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸;对于其余layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度:
11:第十一课:AbsoluteLayout&FrameLayout
1:AbsoluteLayout
指定子控件的xy精确坐标的布局。绝对布局缺乏灵活性,在没有绝对定位的情况下相比其他类型的布局更难维护。
2:FrameLayout
所有添加到这个布局中的视图都以层叠的方式显示。第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件
12:第十二课:RelativeLayout 学习
1:什么是RelativeLayout?
RelativeLayout顾名思义,相对布局,在这个容器内部的子元素们可以使用彼此之间的相对位置或者和容器间的相对位置来进行定位。
注意:不能在RelativeLayout容器本身和他的子元素之间产生循环依赖,比如说,不能将RelativeLayout的高设置成为WRAP_CONTENT的时候将子元素的高设置成为 ALIGN_PARENT_BOTTOM。
2:与RelativeLayout相关的布局属性:
•android:layout_above将该控件置于给定ID的控件之上
•android:layout_below将该控件的置于给定ID控件之下
•android:layout_toLeftOf 将该控件置于给定ID的控件之左
•android:layout_toRightOf将该控件置于给定ID的控件之右
3:与RelativeLayout相关的布局属性
•android:layout_alignBaseline该控件基线对齐给定ID的基线
•android:layout_alignBottom该控件于给定ID的控件底部对齐
•android:layout_alignLeft该控件于给定ID的控件左对齐
•android:layout_alignRight该控件于给定ID的控件右对齐
•android:layout_alignTop该控件于给定ID的控件顶对齐
4:与RelativeLayout相关的布局属性
•android:layout_alignParentLeft如果为True,该控件位于父控件的左部
•android:layout_alignParentRight如果为True,该控件位于父控件的右部
•android:layout_alignParentTop如果为True,该控件位于父控件的顶部
•android:layout_alignParentBottom如果为True,该控件位于父控件的底部
5:与RelativeLayout相关的布局属性
•android:layout_centerHorizontal如果为True,该控件将被置于水平方向的中央
•android:layout_centerInParent 如为Ture,该控件将被置于父控件水平方向和垂直方向
•android:layout_centerVertical如果为True,该控件将被置于垂直方向的中央
13:第十三课:Table Layout学习
1:什么是TableLayout?
表格布局是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。Android的表格布局跟HTML中的表格布局非常类似,TableRow 就像HTML表格的<tr>标记。
2:TableLayout常用的属性
•android:collapseColumns:隐藏指定的列
•android:shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕
•android:stretchColumns:尽量把指定的列填充空白部分
•android:layout_column:控件放在指定的列
•android:layout_span:该控件所跨越的列数
14:第十四课:程序调试技术学习
1:Log日志输出——前面应该会了!
2:单元测试:
Step1:在AndroidManifest.xml中天下如下配置信息:
<application >
<uses-library android:name="android.test.runner"/>
<activity > </activity>
</application>
<instrumentationandroid:name="android.test.InstrumentationTestRunner"android:targetPackage="szy.android.activity"android:label="Testing"/>
Step2:编写单元测试方法
public class TestCase extends AndroidTestCase
{}
3:Debug技能学习——java调试时是一样的!
15:第十五课:Service学习(1)
1:什么是Service?
A Service is an applicationcomponent that can perform long-running operations in the background and doesnot provide a user interface.
——不懂?——百度
2:Service和Thread的区别——自己百度
3:使用Service的方式
• Started
startService():调用者和服务之间没有联系,即使调用者退出了,服务仍然进行[onCreate()-->onStart()-->startService()-onDestory()]
• Bound
bindService():调用者和服务绑在一起,调用者一旦退出服务也就终止[onCreate()-->onBind()-->onUnbind()-->onDestory()]
4:通过startService()使用Service
• 编写类继承Service或其子类
• 复写方法
onStartCommand()onBind() onCreate() onDestroy()
• 在manifest文件中声服务
<serviceandroid:name=".Service" />
• 启动服务
• 关闭服务
5:三个常量——(返回值——你懂的)
• START_STICKY:当服务进行在运行时被杀死,系统将会把它值为started状态,但是并不保存其传递的Intent对象
• START_NOT_STICKY:当服务进行在运行时被杀死,并且没有新的Intent对象传递过来,统将会把它值为started状态,但是并不会再次创建进程,直到startService(Intent)方法被调用。
• START_REDELIVER_INTENT:当服务进行在运行时被杀死,它将会间隔一段时间后重新被创建,并且最后一个传递的Intent对象将会再次传递过来。
16:第十六课:Service学习(2)
1什么是Bound Services?
Bound service 允许其它的组件(比如Activities)绑定到这个Service上,可以发送请求,也可以接受请求,甚至进行进程间的通话。Bound service 仅仅在服务于其它组件时存在,不能独自无限期的在后台运行。
2:创建Bound Services
当创建一个能提供绑定功能的服务时,我们必须提供一个IBinder对象,客户端能使用这个对象与服务进行交互。在Android中有三种方式定义方式:
1.扩展Binder类
2.使用Messenger
3.使用AIDL (Android Interface Definition Language)
3:通过扩展Binder类创建创建Bound Services
步骤:
a.在Service类中,创建一个Binder实例
包含客户端能调用的公共方法
返回当前服务对象
b.在onBind()方法中返回Binder实例
c.在客户端,从onServiceConnected()方法中获得Binder实例,
17:第十七课:Service学习(3)
1:IntentService使用
IntentService是Service类的子类,用来处理异步请求。客户端通过startService(Intent)方法传递请求给IntentService,IntentService通过worker thread处理每个Intent对象,执行完所有工作后自动停止Service。
• 写构造方法
• 复写onHandleIntent()方法
2:IntentService执行如下操作
• 3:创建一个与应用程序主线程分开worker thread用来处理所有通过传递过来的Intent请求
• 创建一个work queue,一次只传递一个intent到onHandleIntent()方法中,从而不用担心多线程带来的问题
• 当处理完所有请求后自动停止服务,而不需要我们自己调用stopSelf()方法
• 默认实现了onBind()方法,返回值为null
• 默认实现了onStartCommand()方法,这个方法将会把我们的intent放到work queue中,然后在onHandleIntent()中执行。