《疯狂Android讲义》笔记


第二章 android应用的界面编程

2.1 开发自定义的View

继承View基类的子类,然后重写View中的方法。

onFinishInflate(): 当应用从XML布局文件加载该组件并利用它来构建界面之后,该方法将会被回调。onMeasure(int,int): 调用该方法来检测View组件及它所包含的所有子组件的大小。onLayout(boolean,int,int,int,int): 当该组件需要分配其子组件的位置、大小时,该方法就会被会回调。onSizeChanged(int,int,int,int): 当该组件的大小被改变时回调该方法。onDraw(Canvas): 当该组件将要绘制它的内容时回调该方法进行绘制。onKeyDown(int,KeyEvent): 当某个键被按下时触发该方法。onKeyUp(int,KeyEvent): 当松开某个键时触发该方法。onTrackballEvent(MoyionEvent):当轨迹球事件时触发该方法。onTouchEvent(MotionEvent): 当发生触摸屏事件时触发该方法。onWindowFocusChanged(boolean): 当该组件得到、失去焦点时触发该方法。onAttachedToWindow(): 当把该组件放入某个窗口时触发该方法。onDetachedFromWindow(): 当把该组件从某个窗口上分离时触发该方法。onWindowVisibilityChanged(int): 当包含改组件的窗口的可见性发生改变时触发该方法。

2.3 UI组件 textView及其子类

  • 实例:不同颜色、字体、带连接的文本(使用textview xml属性)
  • 实例:圆角边框。渐变背景的textview(使用xml文件当成drawable 写入background)
  • 实例:利用单选按钮、复选框获取用户信息(RadioButton、CheckBox )
  • 实例:动态改变布局(ToggleButton 、 Switch)
  • 时钟(AnalogClock、DigitalClock)
    • AnalogClock模拟时钟,DigitalClock显示数字时钟
  • 计时器(Chronometer)
    • setBase(long) 设置计时器的起始时间
    • setFormat(String) 设置显示时间额格式
    • start()
    • stop()
    • setOnChronometerTickListener() 当计时器改变时触发该监听器。

2.4 UI组件 imageView及其子类

子类:

  • ImageButton

    • ZoomButton:可以代表放大缩小按钮
    • ZoomControls:
  • QuickContactBadge:关联联系人

    //一个ImageView现实另一个Image的局部图片
    Bitmap bitmao = bitmaoDrawable.getBitmao();
    image2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120));
    image2.setAlpha(alpha);
    

2.5 UI组件:AdapterView及子类

  • Adapter常用实现类:

    • ArrayAdapter:
    • SimpleAdapter:
    • SimpleCursorAdapter:
    • BaseAdapter:
  • ListView(列表视图)

    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,R.layout.checked_item,arr2);
    list2.setAdapter(adapter2);
    //创建ArrayAdapter需要指定的参数
    //context、textViewResourceId(代表一个TextView,指定布局)、数组或list(指定内容数据)
    
  • 使用SimpleAdapter创建ListView

  • AutoCompleteTextView,MutiAutoCompleteTextView(自动完成文本框)
  • gridview(网格视图)
  • sinner 下拉框
  • AdapterViewFlipper

2.6 UI组件,ProgressBar及其子类

  • 进度条

    • 环形进度条(不能显示进度) 和 水平进度条
    • 显示在标题上的进度条
  • 显示在标题上的进度条

    //设置窗口特征 : 启用显示进度的进度条
    requestWindoeFeature(Window.FEATURE_PROGRESS);      //设置窗口特征: 启用不显示进度的进度条
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    //调用Activity的 setProgressBarVisibility(boolean) 或者 setProgressBarIndeterminateVisibility(boolean)即可控制进度条的显示和隐藏
    
  • 拖动条(seekBar) (继承了ProgresBar)

  • 星级评分条(RatingBar):通过星星来表示进度

2.7 UI组件,ViewAnimator及其子类

  • ViewSwitcher:代表视图切换组件
  • ImageSwitcher(图片切换器)
    • 为ImageSwitcher提供一个ViewFactory,viewFactory生成的View组件必须是ImageView
    • 切换图片时 只要调用ImageSwitcher的setImageDrawable , setImageResource, setImageURI方法更换图片

2.7.4到第三章之间先跳过把


第三章android的事件处理

3.2基于监听的事件处理

android为不同的界面组件提供了不同的监听器接口,比如View

  • View.OnClickListener:单击事件的事件监听器必须实现的接口。
  • View.OnCreateContextMenuListener:创建上下文菜单时间的时间监听器必须实现的接口。
  • View.OnFocusChangeListener:焦点改变事件的事件监听器必须实现的接口。
  • View.OnKeyListener:按键时间监听器必须实现的接口。
  • View.OnLongClickListener:长单击时间的事件监听器必须实现的接口。
  • View.OnTouchListener:触摸屏事件的事件监听器必须实现的接口。

3.4响应系统设置的事件

//调用Activity的如下方法来获取系统的Configuration对象
Configuration cfg = getResource().getConfiguration();
//然后使用Configuration对象的属性来获取系统配置 在Activity中重写 onConfigurationChanged来响应系统设置更改。

3.5handler消息的传递机制

  • 主UI线程中系统已经初始化了一个Looper对象,因此程序直接创建Handler即可
  • 自己启动的子线程,必须创建一个Looper对象并启动它
    • 调用Looper的prepare()方法为当前线程创建Looper对象
    • 调用Looper的loop()方法来启动Looper

3.6异步任务 asynctask

在新线程中更新UI组件方法

  • 使用Hanlder
  • Activity.runOnUiThread(Runnable)
  • View.post(Runnable)
  • View.postDelayed(Runnable,long)

使用AsyncTask:

  1. 创建AsyncTask子类
  2. 实现doInBackground(Params…):后台线程要完成的任务
  3. 实现obPregressUpdate(Progress… values):在doInBackground()方法中调用publisjProgressUpdate()方法更新任务进度,将会触发该方法。
  4. onPreExecute():该方法在执行后台耗时操作钱被调用,一般用于完成初始化准备工作。
  5. onPostExecute(Result result):当doInBackground()完成后,会自动调用obPostExecute()
  6. 使用AsyncTask的实例execute(Params…params)开始耗时任务。

第四章 深入了解Activity与Fragment

Activity:

  • LauncherActivity
  • ExpandableListActivity
  • preferenceActivity 配合PreferenceFragment

启动关闭Activity

  • startActivity(Intent intent) ;startActivityForResult(Intent intent,int requestCode)
  • finish() ; finishActivity(int requestCode)
  • startActivityForResult()启动的Activity应该 调用setResult返回结果,当前activity重写OnActivityResult接收结果

使用Bundle在Activity之间交换数据

  • Intent

    • putExtras(Bundle data) ; getExtras()
    • putExtra(String name,xxx value) ; getXxxExtra(String name)
  • Bundle
    • putXxx(String key,Xxx data) ; getXxx(String key)
    • putSerializable(String key,Serializable data) ; getSerializable(String key , Serializable data)

生命周期与加载模式

  • 生命周期

    • onCreate()
    • onStart()
    • onRestart()
    • onResume()
    • onPause()
    • onStop()
    • onDestory()
  • 加载模式 (配置Activity时指定android:launchMode属性)

    • standard:默认。为目标Activity创建新的实例,并将实例添加到当前Task栈中。
    • singleTop:若启动目标Activity已经位于Task栈顶,系统不会创建新的实例,否则与standard模式相同
    • singleTask :
      • 若目标Activity不存在,则创建并加入栈顶
      • 若目标Activity已经位于栈顶,则与singleTop相同
      • 若目标Activity存在,且不位于栈顶,则将该activity上的其他activity都移出栈
    • singleInstance 在所有Task中只会创建一个目标Activity

fragment

回调:

  • onCreate():初始化必要组件
  • onCreateView():返回一个该Fragment所显示的View
  • onPause(): 当用户离开
  • onAttach():当该Fragment被添加、显示到Activity时,回调
  • onDetach():当该Fragment从它所属的Activity中被删除时回调

与Activity通信:

  • 将Fragment添加到Activity

    • 在布局文件中使用

《疯狂Android讲义》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. Python库全部整理出来了,非常全面
  2. 记 fastjson泛型转对象 第一次可以正常转,第二次就变成JSONArray 问题
  3. Apache Ant安装 验证
  4. hibernate中的 bag
  5. c3p0数据库连接池+mysql数据库基本使用方法
  6. UA PHYS515 电磁理论I 麦克斯韦方程组基础5 电动力学的四类问题与对应的麦克斯韦方程
  7. leetcode#42 Trapping rain water的五种解法详解
  8. 面试总结----java初级工程师
  9. Java技术大咖为什么都有写博客的习惯呢?
  10. Go实现简单负载均衡
  11. 聚类方法学习(三)亲和力传播算法AP
  12. 刚有个做电商的朋友在说,他们想在网上造出品牌销量很容易
  13. Iperf使用方法与参数说明
  14. sai教程初识SAI + 城堡绘画教程
  15. 五个比SCI-Hub还牛的下载文献方法,教你全网免费下载外文文献。
  16. 卫星控制类操作系统VAX/VMS简介
  17. leetcode 经典动态规划DP算法题目(思路、方法、code)
  18. lisp princ详解_LISP – 输入和输出
  19. 仿手机端京东商城html源码_我用手机写了一个Python爬虫,爬下了凡人修仙传……...
  20. Linux下优雅的让程序后台运行

热门文章

  1. 打印全年日历 java实现
  2. Unity3D mipmap
  3. 程序员的希波克拉底誓言[精华]
  4. Windows Wce认证过程MS11-080提权使用
  5. 二寸正面免冠彩色证件照怎么制作?来试试这两个方法
  6. 04:网线主管——二分
  7. vivo X30系列:用影像三级跳,跳进5G时代
  8. 集成学习——Boosting(AdaBoost,Gradient Boosting)
  9. Selenium Firefox淘宝自动登录试验
  10. SJTU-ACM-1530