- 博客(33)
- 问答 (1)
- 收藏
- 关注
原创 Android低功耗蓝牙开发
BLE中,设备分为中心设备(central)和外围设备(peripheral)中心设备就是你的手机,外围设备就是智能手环一类的东西。开发BLE的应用都得遵守Generic Attribute Profile (GATT),一个BLE蓝牙设备包含多个service,每个service 又包含多个characteristic。每个characteristic有一个value和多个descriptor,通过characteristic中心设备与外围设备进行通信,charateristic起着载体的作用,通过w
2022-05-27 15:52:31
1058
原创 ADB常用命令和使用技巧
ADB——Android Debug Bridge,顾名思义就是电脑调试手机的桥梁,借助这个工具,我们可以用电脑来操控手机,不仅是开发者需要,用户也一样需要,也就是电脑再这头,手机在那头,而ADB就是连接二者的”脐带“。ADB基础ADB工具位于SDK的platform-tools目录下,因此使用ADB的时候,需要通过切换到该目录下,或者吧platform-tools路径添加到环境变量中,配...
2020-02-21 11:02:55
165
原创 Android的线程和线程池
Android沿用了Java的线程模型,线程分为主线程和子线程,主线程主要负责处理和界面相关的事情,而子线程则主要用于执行耗时操作,其中主线程也叫UI线程。除了Thread外,Android还提供AsyncTask、IntentService和HandlerThread这些特殊的线程,尽管他们的表现形式有别于传统的线程,但是它们本质仍然是传统的线程。AsyncTask底层用到了线程池,Inte...
2018-11-27 16:50:58
167
原创 Android之Handler详解
handler是什么?handler是android给我们提供用来更新UI的一套机制,也是一套消息处理机制,我们可以发送消息,也可以通过它处理消息。 android中更新ui四种方式:1、runonui只能在Activity中使用@Override protected void onCreate(Bundle savedInstanceState) { ...
2018-11-15 09:56:02
339
原创 View的事件分发机制
MotionEvent 在手指接触屏幕后所产生的一系列事件中,典型的事件类型有如下几种:●ACTION_DOWN——手指刚接触屏幕;●ACTION_MOVE——手指在屏幕上移动;●ACTION_UP——手指从屏幕上松开的一瞬间; 触摸屏幕触发的一系列点击事件:●点击屏幕后松开,事件序列为:DOWN->UP;●点击屏幕滑动一会在松开,事件序列为:DOWN->MOVE-...
2018-05-26 16:33:34
180
转载 Android之ConstraintLayout
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53122387 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。今天给大家带来2017年的第一篇文章,这里先祝大家新年好。本篇文章的主题是ConstraintLayout。其实ConstraintLayout是Android S
2018-04-11 22:39:57
141
原创 Android之Fragment
Fragment,又称碎片,是一种可以嵌入到活动中个的UI片段,所以它跟Activity很像,同样能包含布局,同样都有自己的生命周期,它能让程序更加合理和充分的利用大屏幕的控件,所以在大屏幕的应用中十分广泛。 简单的使用方法 首先我们创建两个fragment的类public class LeftFragment extends Fragment { @Override...
2018-03-02 17:15:36
153
原创 Android之自定义View(二)
自定义View/ViewGroup的一般步骤: 1) 自定义属性; 2) 选择和设置构造方法; 3) 重写onMeasure()方法; 4) 重写onDraw()方法; 5) 重写onLayout()方法; 6) 重写其他事件的方法(滑动监听等)。自定义属性 在values目录下面创建自定义属性的XML,比如attrs.xml,文件内容如下:&...
2018-02-27 17:05:30
189
原创 Android之自定义View(一)
在界面上Android提供了一套GUI库,里面有很多我们常用的控件,但是很多时候我们并不满足于这些控件,因为这样意味着界面的同质化很严重,为了能做出与众不同的界面,我们就要创造自己的控件,也就是自定义View。自定义View是高级进阶的必经之路,学习自定义View之前,我们先要了解View的工作原理。 ViewRoot和DecorView ViewRoot对应于ViewRootI...
2018-02-24 15:12:20
310
原创 实现ListView的下拉刷新功能
1.实现原理在ListView的顶部添加一个header布局,在下拉过程中,然后重新onTouchEvent(),根据滑动过程中y轴的变化,改变header布局的状态,包括hender的提示音和箭头方向。2.实现步骤1)创建header布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro
2017-06-07 16:55:01
242
原创 Java基础
一、面向对象问题1、如何理解面向对象和面向过程面向过程就是分析出解决问题中所需要的步骤,然后用函数把这些步骤一步一步实现,使用时依次调用即可。例如一辆汽车行驶的过程用面向过程的思想考虑的是如何启动汽车、如何起步、急速、刹车、熄火等操作,而汽车在这里并不是我们所关心的;面向对象是把构成问题的事务分解成各个对象,建立对象的目的并不是为了完成一个步骤,而是为了描述某个事务在整个解决问题步骤中
2017-04-05 11:18:11
199
原创 AIDL实现步骤及注意事项
一、AIDL实现步骤1、创建AIDL接口文件,如果接口文件中用到AIDL非默认支持的数据类型,那么还要该数据类型还要先通过AIDL文件定义。所以AIDL文件可以分为两类:一类为一类是用来定义parcelable对象,以供其他AIDL文件使用AIDL中非默认支持的数据类型的。一类是用来定义方法接口,以供系统使用来完成跨进程通信的。2、在服务端中创建AIDL接口文件中的binder实例并实现接
2017-04-01 13:19:55
1355
转载 Android IPC之AIDL的使用
前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我辈年轻人自当有一种一往无前的锐气,标题大气一点岂不更好?并且大家都是文明人,总归更多的是理解与补充而不是侮辱与谩骂?所以最终还是厚颜用了这么一个不怎么有耻的标题。好了,接下来进入正题,谈谈我对AIDL的
2017-03-31 16:57:41
657
转载 【屏幕适配】Android屏幕适配解析
参考博客博客一:(百分比概率)鸿洋 —— Android 屏幕适配方案博客二:(AutoLayout)鸿洋 —— Android AutoLayout全新的适配方式 堪称适配终结者博客二: 凯子哥 —— Android屏幕适配全攻略(最权威的官方适配指导)博客三:凯子哥 —— 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析网站一:Android Design
2017-02-17 10:14:55
369
原创 Android之补间动画
补间动画就是指开发者只需指定动画开始、动画结束等“关键帧”,而动画变化的“中间帧”由系统计算并补齐。▶ AlphaAnimation:透明度改变的动画。创建该动画是要指定动画开始时的透明度、结束时的都名单和动画持续的时间。透明度指定的范围是0~1。▶ScaleAnimation:大小缩放的动画。
2016-09-02 17:15:45
312
原创 Android之SurfaceView使用
1、SurfaceView是View类的子类,在实现游戏绘图方面或者绘图任务繁重等方面时,SurfaceView比View更优秀,因为View有以下缺陷:①View缺乏双缓冲机制②当程序需要更新View上的图片是,程序必须重绘View上显示的整张图片③新线程无法直接更新View上的组件所以在游戏绘图中的人物、背景,一般都是推荐使用SurfaceView。SurfaceView一
2016-08-22 09:41:38
357
原创 Android之PopupWindow使用
PopupWindow跟AlertDialog类似,也是一种弹窗,最大的区别是前者可以指定任意的位置显示,而且可以使用任意布局的View作为其显示的内容。PopupWindow的构造函数://方法一:public PopupWindow (Context context)//方法二:public PopupWindow(View contentView)//方法三:publi
2016-07-22 14:43:54
276
原创 Android之SharePreferences的使用
SharedPreferences存储数据sharedPreferences是使用键值对的方式来存储数据的。存储一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且sharedPreferences还支持多种不用的数据类型存储。Android提供三种方法用于得到sharedPreferences对象。1、Context类中getSh
2016-07-05 16:02:54
758
原创 Android之使用HTTP协议访问网络
对于HTTP协议,大家肯定不陌生,我们平时访问网站的网址一般都是使用http协议的,它的工作原理十分简单,就是客户端此昂服务器发送一条HTTP请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析处理就可以了。可以总结为一下几步:1、客户端发送HTTP请求2、服务器接受服务响应3、服务器返回数据4、客户端解析处理返回数据接下来通过手动发送HTTP请求的方
2016-07-04 14:30:27
496
原创 Android之AsyncTask的使用
AsyncTask是Android提供的轻量级异步类,适合简单的异步任务处理。当然,AsyncTask的实现原理也是基于异步消息处理机制,相当于Thread+Handler。AsyncTask是一个抽象类,它提供接口反馈异步处理的进程,最后把异步处理的结果返回给UI线程。一、AsyncTask的基本用法因为AsyncTask是抽象类,所以想要使用就必须继承该类,在继承时我们可以为Async
2016-06-23 16:34:36
224
原创 Android常用控件之ListView(二)
之前介绍的ListView只能显示文本或者图片,但在实际的应用中显示的内容远不止这些内容,现在我们就来对ListView进行定制,让它显示更加一、定制ListView界面
2016-05-30 14:29:29
318
原创 Android四大组件之Content Provider
内容提供器(Content Provider)主要用于不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。
2016-04-23 15:34:25
322
原创 Android之多线程编程
多线程是实现多任务的一种方式,当我们执行一些耗时操作时,为了避免主线程被阻塞住,从而影响用户的体验,我就要将这类操作放在子线程中运行。一、线程的基本用法Android多线程编程基本上沿用了Java多线程编程的用法,语法大致上是相同的。比如,定义一个线程只需要新建一个类继承自Thread,然后重写父类的run()方法,并在里面编写耗时逻辑即可,代码如下: class MyThread e
2016-04-22 10:31:39
342
原创 Android四大组件之Broadcast Receiver
一、Android广播机制Android每个应用程序都可以只对自己关心的广播进行注册,这些广播可以来自系统,也可以是其他应用程序,而接受广播的方法则需要借助广播接收器(Broadcast Reciever),Amdroid中的广播主要有两种,标准广播和有序广播。标准广播(Normal broadcast)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条
2016-04-07 11:10:22
341
原创 Android四大组件之Service
服务(Service)是Android实现后台运行的解决方案,它适用于执行哪些不需要和用户打交道而且还要长期运行的任务。服务的运行部依赖于任何用户界面,即使当程序切换到后台,或者打开另一个应用程序,服务仍然能够保持运行。不过需要注意的是,服务并不是运行在一个独立的进程中,而是依赖于创建服务时所在的应用程序进程。如果应用程序进程被杀掉,所依赖于该进程的服务也会被停止运行。一、定义一个服务...
2016-04-01 16:37:02
257
原创 在活动中随时退出程序
新建一个ActivityCollector类作为活动管理类public class ActivityCollector { public static List activities = new ArrayList(); /* * 添加活动 */ public static void addActivity(Activity activity){ activities.add
2016-04-01 15:31:53
286
原创 保存Activity的临时数据
当活动被系统回收了,临时的数据也会被回收,打个比方我们在微信发信息的时候,突然进来一个电话,然后系统内存不足,微信的活动被系统回收了,但你聊完电话再返回为微信的活动发现之前打的文字都没有了,这是一个糟糕的体验。Activity提供一个onSaveInstanceState()的方法,在活动被回收之前把临时的数据保存起来时,在MainActivity中添加如下代码:@Override prot
2016-03-31 16:25:50
498
原创 使用Intent实现活动间的跳转和数据传递
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想哟啊执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务、以及发送广播等。Intent用法大致分为两种,显式Intent和隐式Intent。一、显式Intentbutton1.setOnClickListener(new OnClickListener() {
2016-03-31 10:24:04
947
原创 在活动中使用菜单栏
相信大家在使用安卓手机的时候都使用过菜单栏,当我们按下菜单键时当前界面就会弹出一个菜单栏,大大方便我们的操作。接下来我们实现一下这个效果1、重写menu下的XML文件<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
2016-03-30 16:40:02
215
原创 活动的生命周期
一、返回栈Android的活动是可以层叠的,每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键会销毁最上面的活动,之前显示的一个活动就会显示出来。Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也称作返回栈(Back Stack)。默认的情况下,每当启动一个新的活动,他会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调
2016-03-30 15:13:48
841
1
原创 Android四大组件之Activity
活动(Activity)是一种包含用户界面的组件,主要用于和用户进行交互。一个应用程序中可以包含零个或多个活动。一、创建活动在项目的src目录下先添加一个包com.xxx.activityTest,点击Eclipse导航栏中的File→New→Packge,然后填入默认的包名,点击finish。再右击包名→New→Class,命名为FirstActivity,并继承自Activity,点击
2016-03-28 13:49:10
212
空空如也
Android如何实时获取到连接热点的设备IP
2016-08-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人