Android Canvas的save(),saveLayer()和restore()浅谈 时间:2014-12-04 19:35:22      阅读:1445      评论:0      收藏:0      [点我收藏+] 标签:android   class   style   代码   src   使用   com   html   log save()  saveLayer()  restore() 1.在自定义控件当中你onMeasure和onLayout的工作做完成以后就该绘制该…
save()  saveLayer()  restore() 1.在自定义控件当中你onMeasure和onLayout的工作做完成以后就该绘制该控件了,有时候需要自己在控件上添加一些修饰来满足需求 复写onDraw(Canvas canvas),其中Canvas就像是一块画布,你自定义控件的样式就是在它上面完成的. Canvas ,Paint等基本概念就不赘述了. 2.下面就直接用demo来解释标题列出的方法先介绍save()和 必须了解的相关知识:http://www.cnblogs.com…
概述: EventBus是一款针对Android优化的发布/订阅事件总线. 主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service. 线程之间传递消息.优点是开销小,代码更优雅,以及将发送者和接收者解耦. --------------------------------------------------------------------------------------- 下载: 类库源码:https://github.com/g…
http://developer.51cto.com/art/201001/180846.htm Android事件侦听器作为视图View类的接口,其中包含有不少回调方法,比如:onClick():onLongClick():onFocusChange():onKey():onTouch():onCreateContextMenu()等等. Android操作系统中,对于事件的处理是一个非常基础而且重要的操作.许多功能的实现都需要对相关事件进行触发才能达到自己的目的.比如Android事件侦听器…
1.Service Manager的Java代理对象 在Java层中,Service Manager的代理对象类型为ServiceManagerProxy.它继承并且实现了IServiceManager接口,其中四个成员函数和一个变量如下: getService.checkService:获取Java服务代理对象 addService:注册Java服务 listService:获取已经注册的java服务表mRemote:类型为Ibinder,指向了一个BinderProxy对象.这个对象用来描述…
不管是Android亦或者Java中或多或少须要调用底层的一些命令.运行一些參数: 此时我们须要用到Java的Process来创建一个子进程.之所以是子进程是由于此进程依赖于发起创建请求的进程,假设发起者被Kill那个子进程也将Kill. 对于Process相信使用过的朋友一定不会陌生,它具有例如以下特点: 1.创建简单 2.控制难 3.easy导致无法创建子进程 4.假设是多线程那么非常有可能造成内存溢出 以上现象假设你仅仅是偶尔使用一次,创建一个进程也许你什么都没有感觉到,可是假设你使用了多…
(1)第一种方式就是常见的通过intent来启动,被启动的activity需要在mainfest里面注册activity (2)第二种就是通过setContentView来启动,这里activity不需要再mainfest里面注册,同时如果涉及到activity之间的传参,第一种方法需要用到intent的传参,第二种方法时不需要传参.第二种方法实现的具体demo如下 package com.wxyz.dengchaoqun.appmoreactivity; import android.supp…
简单的漏洞越来越少,需要改进目前的方法 : 通过符号执行,得出执行路径,然后在进行fuzzy是较为有效的方法之一 1)为待测单元自动地生成可到达的测试数据,即提高测试目标的覆盖率 2)根据特定的漏洞模式和路径条件,缩小 Fuzzing 测试范围,减少Fuzzing盲目性 符号执行(symbolic execution)是一种代码执行空间遍历技术.枚举了程序所有可能的路径,穷尽所有执行空间,给定漏洞特征,理论上可以检测所有符合特征的安全漏洞 # 过程内符号执行从 CFG 的入口点开始.将所涉及到的…
public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 这个方法在实现时需要重写. onUpgrade方法会在数据库需要升级的时候调用.可以用来增删表或者其他任何操作.如果你想添加新的列你可以使用ALTER TABLE 插入表中.如果需要重命名或者删掉列,可以使用ALTER TABLE 重命名旧表,然后创建新的表,并将旧表数据添加到新表中.如果抛出异常,将自动回滚. 1. 帮助文档里说的"数…
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 2.命名规范 注:个人经验,经供参考 -------------------------------------------------------------------------------------------------------------------------- 一.Andro…