/************************2016年4月23日 更新******************************/
1.前言 在android的进阶之路上,看《android开发艺术探索》实在看不下去了,开始怀疑自己的android基础了,于是找了两本android基础的书把android基础过一遍,还确实发现了好多知识漏洞-基于回调的事件,这个还真以前没用过,然后就想着把android事件处理机制的知识点都整理一遍,嗯,就是这样的。 2.基于监听的事件 基于监听的事件更接近于“面向对象”的事件处理,这种处理方法与java的AWT/Swing的处理方式相同。 2.1监听的处理流程 基于监听的事件
1. activity代码 package com.tsh.dail; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import andro
开发一个简单的拨号器。 开发一个应用的步骤: 小应用的步骤: 1.设计界面 2.activity 3.设计业务层 如果程序比较简单就将代码直接写在activity中 大应用的步骤 1.设计业务层。用android junit测试完成 2.设计界面 3.设计activtiy 我们按照一个简单的应用来开发; 1.设计界面 三个元素,标题,文本输入框,按钮 main.xml 这里面的标签前面的文章都介绍过,这里就不再介绍了;
上一节,先把访问网络的部分放到一个子线程里面去执行,new Thread(){}.start(),new Thread直接使用匿名内部类来实现,重写run()方法,内部类访问外部的变量,这个变量应该定义成final的。
所有的资源文件都会在R.java文件下生成对应的资源id,我们可以直接通过资源id访问到对应的资源。使用mipmap会在图片缩放在提供一定的性能优化,分辨率不同系统会根据屏幕分辨率来选择hdpi,mdpi,xmdpi,xxhdpi下的对应图片,所以你解压别人的apk可以看到上述目录同一名称的图片,在四个文件夹下都有,只是大小和像素不一样而已!当然,这也不是绝对的,比如我们把所有的图片都丢在了drawable-hdpi下的话,即使手机 本该加载ldpi文件夹下的图片资源,但是ldpi下没有,那么加载的还会是hdpi下的图片! 另外,还有一种情况:比如是hdpi,mdpi目录下有,ldpi下没有,那么会加载mdpi中的资源! 原则是使用最接近的密度级别!另外如果你想禁止Android不跟随屏幕密度加载不同文件夹的资源,只需在AndroidManifest.xml文件中添加android:anyDensity="false"字段即可!
学习最重要的就是坚持了,笨鸟多飞,业精于勤荒于嬉,学如逆水行舟,不进则退。前面学了那么多关于函数、语法、类这些知识,确实是比较枯燥,但却是有必要的,因为这些都是在进行业务实现需要的,举个例子,常规功能,登录。你有想过需要哪些业务逻辑处理吗?你不会以为输入账号密码就没事了吗?当然不是,登录首先是页面的布局处理,通常的是输入框和按钮的搭配,当然有的会有图形验证码,手势验证码,或者滑动验证等验证手段,最简单的就是只有账号和密码的登录,但是账号和密码也是要做限制的,登录的时候首先做非空判断,输入类型限制,比如账号指定是纯数字、还是数字加字母,一般来说是纯数字的,纯数字要限制多少位数,如果是手机号的话需要用正则表达式来验证是否为正规的手机号,总不能你输入个13888888888,我都能让你登录上去吧,那这个程序员也要开除,其次就是登录的时候与后台的数据库进行查询对比,假如没有这个手机号是不是还要先注册呢?然后密码当然不能明文显示,也不能明文传输啊,也不能是纯数字或者纯字母,特殊符号什么的,这里又涉及到了密码的安全登录,常见的是三级,纯数字是不行的,这一步你在注册的时候就过不去,然后是最短和最长的密码位数限制,一般来说最短8位最长18位,然后就是传输过程加密,后台对比数据库的值是否一致,一致再允许登录,进一步的出来就是登录过程中的网络处理了,网络请求多长时间,网络异常,等一些问题的处理,但是在用户眼里就是一个简单的登录而已,所以任何功能的设定都没有你实际看上去的那么简单,如果你想的过于简单的话,都不用到客户,测试就能玩死你,你信不信?好了,废话说的有点多了,接下来进入正题,Kotlin中控件的的使用。
private Handler handler = new Handler(){
金兴 1.1G-4G的介绍 G generation 1G 大哥大 只能进行通话 不能发短信 2G wap.baidu.com 支持上网 彩信业务 3G 沃 www.baidu.com 7.2M/s 4G lte long time evolution 100M/s 主要区别 速率的不同 5G 华为 大公司卖标准 小公司卖产品 arm:并不生产处理器 10G/s 2.Android操作系统介绍 安迪鲁宾研发 3.Android历史介绍 And
在Android6.0及以上平台,即便已经添加了打电话的权限,运行时依然会报错安全异常:权限被拒绝。 应该在应用启动时检查应用是否被授予电话权限。
如上,在Activity内部如果声明一个这样的Handler,那么myHandler就默认持有Activity引用,假设Activity退出了,但是可能这时候才有myHandler的任务post,那么Activity是无法被回收的,可以采用以下方式解决:
显示文字,相当于Panel。一般用来文本展示,继承自android.view.View,在android.widget包中。
MVVM是Model-View-ViewModel的缩写。是谷歌推出的AAC(Android Architccture Components)中的组件实现的官方项目框架。主要使用LiveData,ViewModel,DataBinding打造MVVM框架,其他组件是附加的功能。
在kotlin中可以不用使用findViewById来初始化控件,但是在给EditText赋值时使用editText.text = “value”时会提示Type mismatch,这是因为EditText在推断types时出现问题。
一、优化 1.布局优化:尽量减少布局文件层级嵌套,由于RelativeLayout会onMeasure两次,减慢绘制时间,所以,简单布局使用LinearLayout,复杂的用RelativeLayout。使用include标签,merage标签,ViewStub控件加大布局控件的复用率。 2.绘制优化:尽量避免在onDraw方法内做大量的操作。比如不要创建新的局部对象,不要做耗时操作。 3.内存泄漏优化:非静态内部类默认持有外部引用,静态内部类默认不持有外部引用;单例模式导致的内存泄漏,单例的生命周期与application保持一致,由于创建单例时的activity无法被及时释放;属性动画导致的,无限循环动画没有在onDestroy中终止和释放,应该调用animator.cancle()停止动画。 内存泄漏与解决总结
Android项目目录结构 src:项目的java代码 gen buildConfig:应用是否可以debug R:保存项目中使用的资源的id Android.jar:导入这个包,应用才可以使用Android的api libs:存放第三方jar包 assets:资源文件夹,存放视频或者音乐等较大的资源文件 bin:存放应用打包编译后的文件 res:资源文件夹,在这个文件夹中的所有资源,都会有资源id,读取时通过资源id就可以读取 资源id不能出现中文 layout
本文实例为大家分享了Android实现简单用户注册的具体代码,供大家参考,具体内容如下
访问一个网页的请求实际上就是一个GET请求,应用的布局没啥好说的,线性布局,定义好控件,在activity代码里面先获取到控件,获取到EditText控件的网络路径,开启get请求
Android中的异步消息机制分为四个部分:Message、Handler、MessageQueue和Looper。
调用ListView对象的setOnItemClickListener()方法,设置条目的点击事件,参数:OnItemClickListener对象
smali中有两类数据类型:基本类型和引用类型。 引用类型是指数组和对象,其他都是基础类型。
Android的编辑框控件EditText在平常编程时会经常用到,有时候会对编辑框增加某些限制,如限制只能输入数字,最大输入的文字个数,不能输入一些非法字符等,本文就来给大家介绍了一种最简单的输入限制方法。
Android中的View与我们以前理解的“视图”不同。在Android中,View比视图具有更广的含义,它包含了用户交互和显示,更像Windows操作系统中的window。
介绍图 先上个源代码的链接:https://github.com/whenSunSet/MVVMRecycleView RecycleView是Google替代ListView的一种方案,其有着很高的解耦度,让许多开发者抛弃了以往的ListView,那么RecycleView在MVVM架构下又该怎么实现呢?如何实现单条item刷新以及增减Item的自动刷新呢?今天我就要给大家带来一种方便的高解耦度的解决方案。 1.了解几个工具类 我们先来看几个我制作的工具类,这几个工具类可以一直复用。为啥要介绍他
地址 CSDN:http://blog.csdn.net/xiangyong_1521/article/details/78722297 简书:http://www.jianshu.com/p/4123e6bddc30 ---- 目录 前言 避免创建不必要的对象 选择Static而不是Virtual 常量声明为Static Final 避免内部的Getters/Setters 使用增强的For循环 使用包级访问而不是内部类的私有访问 避免使用float类型 使用库函数 谨慎使用native函数 关于性能的误
Android中的消息机制是通过Handler来实现的。随着EventBus和RxJava等依托观察者模式的消息传递机制的出现,当前在Android开发中Handler的使用已经不如之前那么重要,但是Android系统所提供的Handler中的各种编程思路和设计方案,对我们在编程思想的提升还是有很大益处的。
1. android studio 下如何dump heap Paste_Image.png 如图所示,在android studio下dump内存操作还是比较方便的。大致就是在minitor里面操作
界面布局,水平方向四个按钮平均分布,使用权重,定义android:layout_width=”0dp”,定义layout_weight=”1”这个属性全都一致就是平均分布
本文主要介绍的是Lint工具中自带的与Android开发相关的lint检查项,通过查看lint检查项的描述及其代码实现,我发现这里面存在不少应用开发编码的Best Practice,有些是平常编码中非常常见的错误(这类问题建议看下对应的参考资料),有些却有点隐晦(这类问题我们会仔细研究下),这些lint检查项对于我们在平常编码过程中都会有不少启发。
Button(按钮)是Android开发中使用非常频繁的组件,主要是在UI界面上生成一个按钮,该按钮可以供用户单击,当用户单击按钮时,按钮会触发一个onClick点击事件。 一、Button简介 Button使用起来比较容易,可以通过指定android:background 属性为按钮增加背景颜色或背景图片,如果将背景图片设为不规则的背景图片,则可以开发出各种不规则形状的按钮。 如果只是使用普通的背景颜色或背景图片,那么这些背景是固定的,不会随着用户的动作而改变。如果需要让按钮的背景颜
在Android中,内存泄露的现象十分常见;而内存泄露导致的后果会使得应用Crash 本文 全面介绍了内存泄露的本质、原因 & 解决方案,最终提供一些常见的内存泄露分析工具,希望你们会喜欢。
📷 前言 在Android中,内存泄露的现象十分常见;而内存泄露导致的后果会使得应用Crash 本文 全面介绍了内存泄露的本质、原因 & 解决方案,最终提供一些常见的内存泄露分析工具,希望你们会喜欢。 目录 📷 1. 简介 即 ML (Memory Leak) 指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象 2. 对应用程序的影响 容易使得应用程序发生内存溢出,即 OOM 内存溢出 简介: 📷 3. 发生内存泄露的本质原因 具体描述 📷 特别注意 从机制上的角度来说,
Binder是android上的一个类 继承了IBinder,用作Ipc进程间通讯,同是帮助Serivermanager连接各种manager(activitymanager,windowmanager)。客户端和服务端通信时,客户端bindservice,服务器发送给客户端binder对象,客户端拿到binder可以得到服务端数据。通常用到服务都会看到binder,还有binder用在aidl上,举个例子客户端与服务器查询书本和增加书本。
在之前的一篇文章《Kotlin初探》,我们简单的知道了Kotlin这门新语言的优势,也接触了一些常见的语法及其简单的使用,相信你会对它有浓厚的兴趣,暂且理解为对它感兴趣吧,哈哈哈。那么,我们该如何在Android中应用这门新的语言呢?今天的这篇文章带你学习使用Kotlin开发Android应用,并对比我们传统语言Java,让你真真切切的感受到他的美和优雅。
在Android开发中,内存泄露十分常见。本文将详细讲解内存泄露的其中一种情况:在Handler中发生的内存泄露
在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。
通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件、选框的状态切换事件。 一、Android事件处理 Android提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理。 基于监听的事件处理:主要做法就是为Android界面组件绑定特定的事件监听器,前面小节已经见到大量这种事件处理的示例。 基于回调的事件处理:主要做法就是重写Android组件特定的回调方法, 或者重写Activity的回调方法。Android为绝大部分界面组件都提供了
导语: Kotlin现在已成为Android的另一官方语言。JetBrains针对Android开发者也推出了一些有用的库和工具。Anko Layouts是使用Kotlin针对Android布局写的一
本文实例讲述了Android编程简单实现拨号器功能的方法。分享给大家供大家参考,具体如下:
内存泄露是android开发者经常遇到的一个话题,除了activity的内存泄露,我们不妨看看Handler的内存泄露!
常用的一般是 pulltorefresh goole官方推出的是SwipeRefreshLayout 但是这个不能下拉加载 我觉得这个就是硬伤。 推荐还是pulltorefresh.
interface是一些功能的集合,但它只定义了对象必须实现的成员,而不包含成员的实现代码,成员的具体代码由实现接口的类提供。Android对接口的使用场景主要有三类:事件监听器接口、对象序列化结构、线程类相关接口。
调用WebView对象的getSettings()方法,获取到WebSettings设置对象
这些方法都是View类的,所以像TextView这样看似不是按钮的组件也可以使用这些监听。
大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握 内部类
TextView可以说是Android中最简单的一个控件了,你在前面其实已经和它打过一些交道了。它主要用于在界面上显示一段文本信息,比如你在第1章看到的“Hello world!”。下面我们就来看一看关于TextView的更多用法。
这样看起来,类Draw像是类Circle的一个成员,Circle称为外部类。成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。所以,适用于 Android 的ORM 框架也就孕育而生了,现在市面上主流的框架有 OrmLite、SugarORM、Active Android、Realm 与 GreenDAO。而今天的主角便是 greenDAO,下面,我将详解地介绍如何在 Android Studio 上使用 greenDAO,并结合代码总结一些使用过程中的心得。 关于 gre
对于Android的性能优化,想必大家并不陌生,但是没有真正的总结一下,在此我根据自己平时开发,在结合一些读书笔记,对Android的性能优化,进行一些总结。 Android设备作为一种移动设备,不管是内存还是CPU的性能都受到了一定的限制,无法做到像PC设备那样的超大内存和高性能的CPU。 因此,这也意味着,Android不能无限制的使用内存和CPU资源,过多的使用内存会导致程序内存溢出,即OOM。而过多的使用CPU资源,一般是指大量的耗时任务,会导致手机变得卡顿甚至无法响应的情况,即ANR。性能优化的主要是包括布局优化、绘制优化、内存泄露优化、响应速度优化、Bitmap优化、线程优化。 性能优化中一个很重要的问题就是内存泄露,内存泄露并不会导致程序功能异常,但是它会导致Android程序的内存占用过大,这将提高内存溢出的发生几率。在设计程序的时候,还有一个问题也是不可忽略的,那就是代码的可维护性和可扩展性。如果一个程序的可维护性和可扩展性很差,那就意味着后续的代码维护代价是相当高的。
领取专属 10元无门槛券
手把手带您无忧上云