onDraw什么时候被调用?



onDraw什么时候被调用?

1、onDraw是在View初化完成之后开始调用
2、postInvalidate()是重绘的,也就是调用postInvalidate()后系统会重新调用onDraw方法画一次
onDraw实例:
Java code
?

 

@Override

public void onDraw(Canvas canvas) {

// 首先定义一个paint


Paint paint = new Paint();

 

// 绘制矩形区域-实心矩形

// 设置颜色

paint.setColor([......]

Read more

android中view的更新

android中view的更新

Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。

Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。

1,利用invalidate([......]

Read more

Android操作系统的11种传感器

Android操作系统的11种传感器

在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。

01
#define SENSOR_TYPE_ACCELEROMETER 1 //加速度
02
#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
03
#define SENSOR_TYPE_ORIENTATION 3 //方向
04
#define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
05
#define SENSOR_TYPE_LIGHT 5 //光线感应
06[......]

Read more

Android应用中实现查看“附近的人”的功能

Android应用中实现查看“附近的人”的功能越来越多的Android应用都加入了“附近的人”的功能,比如微信、陌陌、淘宝等,今天分享一个demo,简单的来实现这一功能。主要原理为:手机端上传gps数据到服务器,服务器从数据库中查询其他用户的gps数据,分别计算2个pgs之间的距离,然后将计算好的数据返回给手机,手机进行展示。

源码下载地址: https://github.com/feicien/studydemo
手机端项目:NearByDemo
服务器端项目:NearbyServerDemo

手机端代码讲解:
MainActivity是项目的入口Activity

&[......]

Read more

android指南针—核心代码

android指南针—核心代码

指南针一直是一个不可或缺的重要的角色
开发指南针的思路很简单,程序先准备一张指南针图片,让图片上方向的指针,指向正北方,接下来开发检测方向的传感器,程序检测到手机顶部绕过Zf轴多少度,让指南针的图片,反向转过多少度即可。
主要代码如下

[java] view plaincopyprint?
package com.example.compass;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEv[......]

Read more

android 模拟时钟

android 模拟时钟

前言
前不久在网上看见Android实现的模拟时钟,感觉十分有意思,这里是地址:

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=58324可惜的是这种方式没有

秒表。笔者突然对其有了兴趣,也想去实现以下自己的模拟时钟。折腾了一阵子总算是弄出来了
现在将实现方式共享出来,大家一些交流。
不多说,先上效果图:

准备工作
首先我们应该准备相关的素材:时钟盘、时针、分针、秒针图片.
时钟盘:

时针:

分针:

秒针:

源码部分
配置文件,比较简单:
[ht[......]

Read more

Invalidate和postInvalidate的区别

Invalidate和postInvalidate的区别。

Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。

Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。

1,利[......]

Read more

ByteBuffer方法学习

ByteBuffer方法学习

在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer.因此ByteBuffer的用法是有必要牢固掌握的.

1.创建ByteBuffer
1.1 使用allocate()静态方法
ByteBuffer buffer=ByteBuffer.allocate(256);
以上方法[......]

Read more

java中数组的定义及使用

java中数组的定义及使用

数组:是一组相关变量的集合
数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组
数据的有点
不使用数组定义100个整形变量:int i1;int i2;int i3
使用数组定义 int i[100];
数组定义:int i[100];只是一个伪代码,只是表示含义的
一维数组
一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的,
使用java数组,必须经过两个步骤,声明数组和分配内存给该数组,
声明形式一
声明一维数组:数据类型 数组名[]=null;
非配内存给数组:数组[......]

Read more

Hazelcast: Java分布式内存网格框架

Hazelcast: Java分布式内存网格框架

hazelcast是一个开放源码集群和高度可扩展的数据分发平台,这是为Java:
1. 快如闪电;数以千计的运算/秒。
2. 故障安全;崩溃后没有丢失数据。
3. 作为新服务器的动态调整 。
4. 超级简单的使用 ,包括一个单独的jar。

Hazelcast与各种分布式数据结构,分布式缓存功能,弹性的性质,memcache的支持,与Spring和Hibernate的集成,更重要的是这么多的快乐用户,是功能丰富,企业的准备和开发人员友好的内存数据网格解决方案。

Hazelcast是一个Java的开源分布式内存实现,它具有[......]

Read more