安卓初学基础学习笔记

项目结构介绍

  • src:存放所有java源代码
  • gen:系统自动生成的配置文件
  • Android x.x.x:包括构建程序所需的x.x.x版本的安卓SDK、APIs
  • assets:存放资源图片,未使用时不会生成id且不会加入到apk包里面占大小
  • res:所有用到的资源,如图片、布局等
  • drawable-xxx:不同分辨率的图片资源
  • layout:布局文件
  • values:字符串、主题、颜色、样式等资源文件(values-v11/14 是现在版本出现的 v-11是3.0版本14是4.0版本)
  • AndroManifest.xml:清单文件,配置应用的相关的主要信息(包名、权限、程序组件等)

控件概述

  • <b>TexView:</b>只能做显示框

    • 控件属性(id-id,layout_width-宽度,高度,text-内容,textSize-字体大小(单位:一般是sp),textColor-颜色,background-背景)
    • 控件宽度:warp_content-和文本宽度一样,match_parent-铺满父容器(在2.3的api之后添加的属性),fill_parent-填充父容器(在2.3之前的属性)
    • 跑马灯效果:当页面中只有一个textView时,


      单个TextView

    多个时,需要自定义一个继承于textView类,在里面定义一个isFocused()方法且返回true,然后再xml里面使用自定义控件(包名.类名)


    多个TextView
  • <b>EditText</b>:输入框

    • 控件属性(比显示框多出了 hint-提示文本,inputType-文本类型 这2个属性)
    • 修改样式
  • <b>AutoCompleteTextView</b> 动态匹配输入的内容(输入东西,出现相应的列表以供选择)

    • 控件属性(completionThreshold:设置输入多少个字符开始匹配)
    • 1.在activity里面找到对应控件,2.创建一个适配器,3.初始化数据源,4.用setAdapter将适配器和控件关联起来


      代码绑定控件
  • <b>MultiAutoCompleteTextView</b> 相较于autocom...可以多设置一个分隔符的属性

    效果图展示

初始化


初始化控件
  • <b>ImageView</b>:显示图片
    • 控件属性(src-图片,background -背景图片、颜色)
  • <b>Button、ImageButton</b>
    • 获取xml中的按钮:btn = (Button) findViewById(R.id.button的id);
    • 控件属性: ImageButton无text属性,Button无src属性
    • 按钮onClick事件来监听按钮点击(所有控件都有这个事件),
      • 监听事件实现的几种写法:1.匿名内部类 setOnClickListener(new OnClickLen...这里将会是一个bolck回调),2.独立类(相当于弄一个父类出来


        独立类

,3.实现接口的方式 需要在类实现OnClickListener接口(使用implements关键词调用),会在当前类实现onClick方法(会自动生成)btn.setOnClickListener(this)调用

  • <b>ToggleButton</b> 开关按钮-相当于switch控件,默认是关闭的

    • 控件属性: checked-是否为开,textOff-关闭显示什么,textOn-打开显示什么
    • 使用:给按钮设置监听器,需要类实现CheckedChangeListener接口


      设置点击回调
  • <b>CheckBox</b> 复选框

    • 控件属性:


      属性
    • 使用:


      使用方法
  • <b>RadioGroup和RadioButton</b> 单选列表

    • 属性:


      单选列表属性

String的使用

在string文件里面写入 <string name="xxx(用英文)">调用后获取的字符串</string>

implements关键字代表让一个类拥有另一个类的属性

六大布局(布局中可以包含其他布局,可相互套用)

线性布局(LinerLayout)

是线性布局控件,决定它包含的子控件是水平-Hor 还是垂直-Ver 排布方式。


常用属性
子控件在Layout中常用属性

layout_weight这个属性赋值 代表所有控件的属性都加起来后占得比例。例如:控件a的该属性=1,控件b的该属性=2,那么到时候a的比例就是1/3.

相对布局(RelativeLayout)

控件的位置设置是相对的,它包含的子空间将以控件之间相对位置或子类控件相对于父类容器的位置的方式排列。


效果图

常用属性:
相对父类容器的属性


相对父类容器的属性

相对于子类控件的属性


相对于子控件的属性

约束布局(ConstraintLayout)

ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能。非常适合使用可视化的方式来编写界面,但并不太适合使用XML的方式来进行编写。当然,可视化操作的背后仍然还是使用的XML代码来实现的,只不过这些代码是由Android Studio根据我们的操作自动生成的。还可以有效地解决布局嵌套过多的问题

  • 添加约束-拖动右边视图中的点来确定约束对应哪个,可以是底部视图,也可以是其他控件

    • 控件对根视图添加约束

      添加约束

    • 控件之间的约束添加


      控件之间添加约束
  • 删除约束

    • 单个约束删除


      删除单个约束
    • 单个控件所有约束删除


      删除所有约束
    • 当前页面所有约束删除
      直接选中顶部的这个按钮就OK


      删除当前页面所有约束

帧布局(FrameLayout)

所有的元素都不能被指定放置的位置,它们都在父视图的左上角,并且后面的子元素在前面子元素之上。 可以用来做加载进度条和文字。
当你想设置前景图时,可以使用foreground将当前控件放在最前面来。

绝对布局(AbsoluteLayout)

坐标布局,直接指定子元素的绝对位置。
不常用。了解下就OK

表格布局(TableLayout)

相当于tableview 每一行为一个TableRow对象,继承自View。
自身的属性


属性

<b>当想要所有控件都调用的话,直接用 = "*";</b>

下面这2个属性是使用在TableRow内部控件的属性中的


Row的属性

Activity(相当于OC的VC)

什么是Activity? 视图控制器
创建到销毁的生命周期:

onCreate()----创建
onStart()-----运行
onResume()----获取焦点
onPause()-----失去焦点
onStop()------暂停
onDestory()---销毁
onRestart()---重新运行
st=>start: onCreate
e=>end: onDestory
op1=>operation: onStart
op2=>operation: onResume
op3=>operation: onPause
op4=>operation: onStop
op5=>operation: onRestart
cond=>condition: 不重新启动?

st->op1->op2->op3->op4->cond
cond(yes)->e
cond(no)->op1

从启动到后台,再到前台的生命周期:

启动->后台->前台的生命周期

从启动到失去焦点,再到获取到焦点的生命周期:

启动->失去焦点->获取焦点的生命周期

Intent-意图

它可以启动一个activity、Service、Broadcasts(广播)

  • 属性:Action-动作(常用),Data-数据(常用),Category-分类,Type-类型,Compent-组件,Extra-扩展信。
  • Action-是一个字符串常量,系统自己定义了一些常量,例如:ACTION_CALL-启动电话、ACTION_BATTERY_LOW-发送一个电池过低的警告等等。
    • 常见的Action
    1. ACTION_CALL activity 启动一个电话.
    2. ACTION_EDIT activity 显示用户编辑的数据.
    3. ACTION_MAIN activity 作为Task中第一个Activity启动
    4. ACTION_SYNC activity 同步手机与数据服务器上的数据.
    5. ACTION_BATTERY_LOW broadcast receiver 电池电量过低警告.
    6. ACTION_HEADSET_PLUG broadcast receiver 插拔耳机警告
    7. ACTION_SCREEN_ON broadcast receiver 屏幕变亮警告.
    8. ACTION_TIMEZONE_CHANGED broadcast receiver 改变时区警告.
  • Data-
组件名称 方法名称
Activity-视图 startActivity(intent) , startActivityForResult(intent,requestCode)
Servic-服务 startService(Intent service) , bindService(Intent service, ServiceConnection conn,int flags)
Broadcasts-广播 sendBroadcast()-该方法有很多的方式调用,sendOrderedBroadcasts-有2个函数,根据情况使用

其中广播的Intent参数的 RequiresPermission 修饰符表示需要许可,即要权限。

拿到别人的项目需要配置的地方(协同开发)

Android Studio正确打开项目只需要两步,或者说找到两个文件进行简单的修改就好,最好在打开之前进行修改

  • gradle-wrapper.properities
    查找路径:/gradle/wrapper/ gradle-wrapper.properities,打开后可以看到最后一行是一个地址链接,重点是链接的最后部分gradle-2.10-all.zip,AS不同版本对应的GradleWrapper版本号也不一样,想知道自己当前的是多少,可以在As命令行如gradlew -v查看,也可以新建一个项目到该路径下查看,修改完成后保存。
    image.png
  • build.gradle
    第二个需要修改的文件更好找,就是我们常用的Project下的build.gradle,打开后找到如图所示位置,把classpath的gradle版本号也改成当前对应的就行,至于当前的版本号是多少,随便打开一个自己在本地创建的project就能知道了

错误

遇见这种错误:1) Error:(199) *** Android NDK: Aborting... . Stop.
2)Error:Execution failed for task ':app:compileDebugNdk'. >com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException: Process 'command 'C:\Users\vishal\android-ndk-r10d\ndk-build.cmd'' finished with non-zero exit value 2
解决方法

LogCat调试 Debug

1,长什么样子?


LogCat

筛选输出类型

2,一般常见的输出信息

常见输出

红色的表示错误信息,以及错误的原因

错误信息

OptionsMenu选择菜单(点击系统菜单按钮弹出)

一个Activity只能有一个菜单

  • 创建需要重写onCreateOptionsMenu()
    • 可用代码动态设置,调用menuadd()方法
    • xml固定设置,使用MenuInflater.infalte()方法引用
  • 监听菜单项的点击,重写onOptionsItemSelected()方法

上下文菜单 (一般是长按某个东西弹出的菜单)

一个View可以拥有一个菜单,常见于文件夹长按后弹出操作菜单

  • 创建需要先使用 registerForContextMenu() 注册上下文菜单 重写onCreateContextMenu()
    • 可用代码动态设置,调用menuadd()方法
    • xml固定设置,使用MenuInflater.infalte()方法引用
  • 监听菜单项的点击,重写onContextItemSelected()方法

还有很多需要学习,加油!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,874评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,151评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,270评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,137评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,116评论 5 370
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,935评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,261评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,895评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,342评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,854评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,978评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,609评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,181评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,182评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,402评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,376评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,677评论 2 344

推荐阅读更多精彩内容