自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注Android开发

淡泊以明志,宁静以致远

  • 博客(38)
  • 收藏
  • 关注

转载 android下解析.plist配置文件的xml解析器

package com.founder.suzhou.ar.util;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;import org.xml.sax.Attributes;imp

2013-12-31 16:00:29 869

转载 关于用Android的API重写drawRegion方法的代码

Android里面没有drawRegion只好重写,不废话,上代码:[java] view plaincopypublic static void drawRegion(Canvas g,Bitmap bitmap, int x_src, int y_src, int width, int height, int transform,

2013-12-26 12:05:23 767

转载 android ShapeDrawable实例

android ShapeDrawable实例[java] view plaincopy关于ShapeDrawable的使用,分为两个部分   一、是使用已经存在的ShapeDrawable子类  (1)首先声明ShapeDrawable对象,有子类实例化。  (2)设置ShapeDrawable对象的Color或者Shade

2013-12-26 12:01:24 747

转载 Graphics->PathFillTypes

对于简单的封闭图形(路径无相交的现象),图形的外部和内部和容易判断,但如果路径有相交的情况,对应重叠的部分,使用不同的填充模式,内部和外部的定义有所不同。填充模式可以分为两类:EVEN_ODD  意味着如果用一条直线横贯图形时,外部和内部交替出现。WINDING   对应一条曲线C和指定点P,创建一条由P出发的任意方向无限延伸的直线。找到曲线C和这条直线的所有交点。计算所有由顺时针

2013-12-26 11:32:19 715

转载 android下不规则多边形填充位图

最近研究android的2D图形,在android中,画多边形的方法很多,这里提供一个简单的方法。用Path来实现。Path path = new Path();path.moveTo(50, 50);path.lineTo(100, 50);path.lineTo(100, 0);path.lineTo(150, 0);path.l

2013-12-26 11:30:12 2937

转载 Android 如何清空Canvas ?(找了好久的答案)

Android 如何清空 Canvas ?似乎一直未找到好的解决办法,有的方法限制使用纯色背景,但无论怎么尝试,都未见效果,终于在 http://stackoverflow.com/questions/4650755/clearing-canvas-with-canvas-drawcolor  上面找到了答案:经过尝试,结果如下:

2013-12-25 18:08:29 1814

转载 android自定义view-绘制顺序及相关原理

Android系统中要自定义view,首先需要了解Android的view加载机制。主要有三个方法:1、onMeasure() //计算出view自身大小2、onLayout() //仅在ViewGroup中,用来为子view指定位置3、onDraw() //view绘制内容那么系统能让我们在onDraw()能够绘制些什么呢,查看View.draw()源

2013-12-25 15:14:55 1028

转载 Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator

canvas 还提供裁剪的功能。 裁剪功能由Canvas提供的一系列的clip...方法 和quickReject方法来完成。 前面已经提到,真正提供可绘制区域的是Canvas内部的mutable bitmap。 Canvas更像是一个图层,我们只能在这上面的图层来绘制东西。1、首先介绍Region类Region,中文意思即区域的意思,它表示的是canvas图层上的某一块封

2013-12-24 15:15:33 747

转载 Android 2D Graphics学习(二)、Canvas篇1、Canvas基本使用

Canvas的意思是画布,表现在屏幕上就是一块区域,我们可以再上面使用各种API绘制我们想要的东西。可以说,Canvas贯穿整个2D Graphics,android.graphics中的所有类,几乎都于Canvas有直接或间接的联系。所以了解Canvas是学习2D Graphics的基础。Android官方文档对Canvas的简介很好的介绍了Canvas的使用:[

2013-12-24 15:14:55 853

转载 Android 2D Graphics学习(一)、android.graphics介绍

Android 2D Graphics的绝大部分API都在android.graphics中,它提供了低级的graphics工具,包括canvas,color filters,point,rectangle等等,我们可以使用它们直接在屏幕上绘制我们想要的图形。在android.graphics中还有一个子包,android.graphics.drawable,它定义了一系列的drawabl

2013-12-24 15:13:45 756

转载 编写你的第一个垃圾收集器

本文由 伯乐在线 - deathmonkey 翻译自 Bob Nystrom。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。伯乐在线补充:本文作者 Bob Nystrom 是 Google Dart 团队的一名工程师,所以下文中”处理一些工作上的事情“中的链接是指向了 Dart 官网。Bob 之前(曾在 EA 公司)做过游戏开发,UI 设计。更多信息,请看他的简历。

2013-12-23 03:17:43 571

转载 Java instanceof 关键字是如何实现的?

在进入正题前先得提一句:既然楼主提问的背景是“被面试问到”,那很重要的一点是揣摩面试官提问的意图。按照楼主的简单描述,面试官问的是“Java的instanceof关键字是如何实现的”,那要选择怎样的答案就得看面试官有怎样的背景。比较安全的应对方法是请求面试官澄清/细化他的问题——他想要的“底层”底到什么程度。-----------------------------------------

2013-12-20 14:43:33 1870 1

原创 Android代码隐藏RadioButton默认图标

RadioButton radioButton=new RadioButton(context);radioButton.setButtonDrawable(android.R.color.transparent);

2013-12-18 12:00:52 3653

转载 通过字符串构建查找图片资源ID

为了灵活显示图片,往往会通过设置一些变量来实现,而字符串是比较经常被使用到的下面介绍2种通过字符串显示图片的方法1. 不把图片放在res/drawable下,而是存放在src某个package中(如:com.drawable.resource),这种情况下的调用方法为:String path = "com/drawable/resource/image.png";Inp

2013-12-12 15:48:50 745

转载 android 自定义ScrollView实现背景图片伸缩的实现代码及思路

用过多米音乐的都市知道, 这个UI可以上下滑动,作用嘛---无聊中可以划划解解闷,这被锤子公司老罗称谓为“情怀”,其实叫“情味”更合适。嘿嘿.如今挪动互联网开展这么迅速,市场上已不再是那早期随便敲个APP放上架就能具有几十万用户的阶段了.近来苹果公司,为了怕android下载量赶超苹果商店,大势宣称:(第 500 亿个下载应用的用户就能够获得 10,000 美元的 iTunes 礼品卡,除此之外,

2013-12-11 17:07:10 1389

转载 Android之重写ScrollView实现两个ScrollView的同步滚动显示

1.背景介绍  最近项目用到两个ScrollView的同步显示,即拖动左边的ScrollView滚动的同时,实现右边的ScrollView同步滚动。此种情形常用在复杂界面布局中,比如左边的ScrollView显示主要项目,只需上下滚动即可;右边项目是次要项目,可以实现上下或者左右滚动,当上下滚动时,需要左右两边的同步显示。         如图所示,左侧是主项目(日期和股票

2013-12-11 17:05:42 797

转载 栈帧

首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(地址地)。下图为典型的存取器安排,观察栈在其中的位置 入栈操作:push eax; 等价于 esp=esp-4,eax->[esp];如下图出栈操作:pop eax; 等价于 [esp]->eax,e

2013-12-05 20:08:32 678

转载 JAVA中的指针,引用及对象的clone

看到这个标题,是不是有点困惑:Java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的代码不亚于使用早已臭名昭著的"GOTO"语句。Java放弃指针的概念绝对是极其明智的。但这只是在Java语言中没有明确的指针定义,实质上每一个new语句返回的都是一个指针的引用,只不过在大多时候Java中不用关心如何操作这个"指针

2013-12-05 19:22:09 597

转载 对象的内存布局

在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启压缩指

2013-12-05 18:47:48 675

转载 JAVA虚拟机体系结构

JAVA虚拟机的生命周期  一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。  Java虚拟机实例通过调用某个初始类的main()方法来运行

2013-12-05 18:17:09 620

转载 句柄与指针

所谓 句柄实际上是一个数据,是一个Long (整长型)的数据。句 柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样

2013-12-05 17:15:06 1353

转载 Android内存分析和调优(下)

最后一部分是关于native heap,.dex,/dev/other的优化。Native Heap分析和优化android的DDMS可以帮助查看c++ native heap的使用,但需要一定的配置,而且必须是root的手机。在~/.android/ddms.cfg增加"native=true"。这样子ddms才会有native heap的tab。指向下面adb命令打开m

2013-12-05 16:30:23 723

转载 Android内存分析和调优(中)

在前文中讨论了如果使用adb shell procrank, dumpsys meminfo和showmaps分析进程的内存占用情况。本文将继续细化,具体分析导致内存过大的dalvik heap。Dalvik heap分析和优化Dalkvik heap是最常见的android应用内存优化的对象。通过上文的分析,我们可以通过adb shell的命令,知道用了多少dal

2013-12-05 16:29:57 523

转载 Android内存分析和调优(上)

最近我们的android app占用了大量内存,于是领导安排做减少内存占用的工作。要优化内存,首先要做的就是分析内存占用情况。android提供了多个工具和命令进行内存分析。 第一层 Procrank 很粗略的,可以使用"adb shell procrank",结果类似于PID    Vss        Rss        Pss       U

2013-12-05 16:29:29 700

转载 String中intern的方法

首先查看官方API那个的解释:———————————————————————————————————————internpublic String intern()返回字符串对象的规范化表示形式。一个初始时为空的字符串池,它由类 String 私有地维护。当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 e

2013-12-05 16:28:52 729

转载 使用String.intern减少内存使用

最近写一个程序,从文件中读取一些字/词,然后存储起来供别的类引用。对每个读入的词创建一个String,结果许多同样内容的也会存储多份,会占用大量内存。开始的一个想法是使用map/set来存储所有遇到的词,这样就没有重复的了。然后别的类只需要引用这些词就可以了。这样还需要一些工作量,经别人介绍,发现了String.intern方法。例如下面代码String a

2013-12-05 16:20:38 733

转载 Android View 可视控件的继承关系

Android View 可视控件的继承关系,由于版面原因我刚才看了下,好像不能全部显示特意调整

2013-12-04 19:44:28 1151

转载 《深入理解java虚拟机》学习笔记10——并发编程(二)

Java的并发编程是依赖虚拟机内存模型的三个特性实现的:(1).原子性(Atomicity):原子性是指不可再分的最小操作指令,即单条机器指令,原子性操作任意时刻只能有一个线程,因此是线程安全的。Java内存模型中通过read、load、assign、use、store和write这6个操作保证变量的原子性操作。long和double这两个64位长度的数据类型jav

2013-12-04 15:36:58 661

转载 《深入理解java虚拟机》学习笔记9——并发编程(一)

随着多核CPU的高速发展,为了充分利用硬件的计算资源,操作系统的并发多任务功能正变得越来越重要,但是CPU在进行计算时,还需要从内存读取输出,并将计算结果存放到内存中,然而由于CPU的运算速度比内存高几个数量级,CPU内的寄存器数量和容量有限,为了不让CPU长时间处于等待内存的空闲状态,在CPU和内存之间引入了速度接近CPU的高速缓存Cache作为CPU和内存之间的缓冲。计算机硬件并发的原理如下:

2013-12-04 15:36:33 717

转载 《深入理解java虚拟机》学习笔记8——Tomcat类加载器体系结构

Tomcat 等主流Web服务器为了实现下面的基本功能,都实现了不止一个自定义的类加载器:(1).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互隔离。(2).部署在同一个服务器上的两个web应用程序所使用的java类库可以相互共享。(3).许多Web服务器本身使用java语言实现,因此服务器所使用的类库应与应用程序的类库相互独立。(4).支持J

2013-12-04 15:36:05 686

转载 《深入理解java虚拟机》学习笔记7——Java虚拟机类生命周期

C/C++等纯编译语言从源码到最终执行一般要经历:编译、连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的加载、连接都在运行时执行,虽然类加载和连接会占用程序的执行时间增加性能开销,但是却可以为java语言带来高度灵活性和扩展性,java的针对接口编程和类加载器机制实现的OSGi以及热

2013-12-04 15:35:21 675

转载 《深入理解java虚拟机》学习笔记6——类加载机制

Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。c.在java堆中生成一个代表该

2013-12-04 15:34:44 642

转载 《深入理解java虚拟机》学习笔记5——Java Class类文件结构

Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不同操作系统和硬件平台的差异性。如今的java虚拟机已经称为一种通用平台,不但能够运行java

2013-12-04 15:34:24 531

转载 《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器

Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下:图中如果两个垃圾收集器直接有连线,则表明这两个垃圾收集器可以搭配使用。(1).Serial垃圾收集器:Serial

2013-12-04 15:33:17 549

转载 《深入理解java虚拟机》学习笔记3——垃圾回收算法

Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的内存。常用的垃圾回收算法有:(1).引用计数算法:给对象中添加一个引用计数器

2013-12-04 15:32:46 716

转载 《深入理解java虚拟机》学习笔记2——Java内存溢出实例

通过简单的小例子程序,演示java虚拟机各部分内存溢出情况:(1).java堆溢出:Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收实例对象,就会在对象数量达到堆最大容量时产生OutOfMemoryError异常。想要方便快速地产生堆溢出,要使用如下java虚拟机参数:-Xms10m(最小堆内存为10MB),-

2013-12-04 15:31:46 562

转载 《深入理解java虚拟机》学习笔记1——Java内存结构

java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下:其中方法区和堆是由所有线程共享的数据区。Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。(1).程序计数器:是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程

2013-12-04 15:30:20 621

转载 构建自定义组件

Android中,你的应用程序程序与View类组件有着一种固定的联系,例如按钮(Button)、 文本框(TextView),可编辑文本框(EditText), 列表框(ListView), 复选框(CheckBox), 单选框(RadioButton), 滚动条(Gallery), 微调器(Spinner), 等等,还有一些比较先进的有着特殊用途的View组件,例如AutoCompleteT

2013-12-04 10:54:54 524

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除