`
chroya
  • 浏览: 656370 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
     现在的Android应用越来越庞大,开发者越来越能感受到方法数限制带来的影响。这里简单讲几个减少方法数的小建议。   1.什么是方法数?为什么它这么重要?     这要从dex的文件格式说起,在把源码编译、转化为dex文件格式时,dex文件中会有一个区域包含了所有源码中定义或引用的方法列表。这个区域中所有方法项的总数就是方法数。 很遗憾,Android在刚开始被设计的时候,这一区域的方法数量不能超过65536个,也就是2个字节表示的范围。当源码定义或引用的方法数量超过了这个限制的话,就会导致编译不成功,你说重要不重要呢?    2.如何查看这些方法?     可以使用 ...
每次写博客的时候,很想配个图,但是这个编辑器太烂了,必须得把图片上传到相册或者放到网上才能用,麻烦死了,想多贴几段代码的时候,想想就没兴致了。为什么不能从电脑里面copy一下,粘贴到指定地方的时候就直接帮忙上传呢?这个不难实现吧?  
   目录: Android NFC . 1 1 简介 ... 1 1.1 什么是 NFC . 1 1.2 Android 上的 NFC . 2 1.3 Android 中的 NFC 通讯机制 ... 2
本文转载自ring0hx的博客: http://blog.csdn.net/ring0hx/article/details/6858582 虽然不够深入,但是很全面 1         同步                 如何同步多个线程对共享资源的访问是多线程编程中最基本的问题之一。当多个线程并发访问共享数据时会出现数据处于计算中间状态或者不一致的问题,从而影响 到程序的正确运行。我们通常把这种情况叫做竞争条件(race condition),把并发访问共享数据的代码叫做关键区域(critical section)。同步就是使得多个线程顺序进入关键区域从而 ...
本文转载自July CSDN博客:http://blog.csdn.net/v_JULY_v/archive/2011/03/07/6228235.aspx   第一部分、来自圣经的十大算法     当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重的十大算法,你会作何选择列?     曾有人在StackExchange上发起了提问,向网友们征集当今世界最为经典的十大算法。众人在一大堆入围算法中进行投票,最终得出了票数最高的以下十个算法。     来自圣经的十大算法:     发起人的描述:《来自圣经的证明》收集了数十个简洁而优雅的数学证明,迅 ...
      让程序全屏的方法,大家都知道,那是静态的,程序运行之初就申明了。但是如果有这样的需求:要在程序运行的过程中,执行了某个操作而使之全屏,然后还需要退出全屏,怎么做?     如下: WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); getWindow().addFlags(WindowManager.Layou ...
    快三个月了没写博客了,因为工作调动,很多经验、心得都没有时间记录下来。现在时间稍微充裕了点,我会尽量抽时间将之前想写而没写的东西补上。进入正题。     去年某个时候,我偶然看到一篇文章,讲android里面放大镜的实现。文章很乱,没有格式,基本上属于看不下去的那种。虽然体裁很有意思,但是我也没有足够的内力把它看完。不过看到一句关键的话,说是使用带圆形的Drawable。这句话就够了,他下面写的一堆东西我也懒得看,于是就自己开始尝试,然后就做出来了。现在代码贴出来分享。 package chroya.demo.magnifier; import android.conten ...
      今天偶然看到一个圆盘形的菜单,还可以转动,感觉挺有意思,然后想了想,做了个简单的效果。       思路是这样的,定一个原点和一个半径,圆的四周均匀分布每个菜单。为了方便计算,菜单的坐标用度数表示,然后转化为极坐标计算。       定某个点为起始点,根据总菜单数确定每个点增加的度数,然后依次确定每个点的度数,也就确定了坐标。   package chroya.demo.roundspin; import android.content.Context; import android.graphics.Bitmap; import android.graphi ...
       见过没有用opengl的3D动画,看了一下,是用的Camera实现的,内部机制实际上还是opengl,不过大大简化了使用。        Camera就像一个摄像机,一个物体在原地不动,然后我们带着这个摄像机四处移动,在摄像机里面呈现出来的画面,就会有立体感,就可以从各个角度观看这个物体。         它有旋转、平移的一系列方法,实际上都是在改变一个Matrix对象,一系列操作完毕之后,我们得到这个Matrix,然后画我们的物体,就可以了。         常用的API如下:     rotateX(float degree)  绕着x轴旋转degr ...
        经常看到一些教程教你如何写appwidget,但是,你知道你的appwidget是如何被添加到桌面上的吗?         一般的,如果是做桌面的童鞋,基本上都会让自己的桌面支持appwidget。下面说说如何实现。         首先是得定义一个承载appwidget的容器,系统的Launcher里面是用的CellLayout,实现的很不错。我这里就用一个简单的自定义ViewGroup来搞定,它是以长按的坐标处为要添加的appwidget的起始位置,简单点说就是按到哪儿就添加到哪儿。 package chroya.demo.widget; import ...
      为什么人生气时说话用喊的?       有一天一个有智慧的教授问他的学生:“为什么人生气时说话用喊的?” 所有的学生都想了很久,其中有一个学生说:“因为我们丧失了冷静,所以我们会用喊的。” “但是为什么别人就在你旁边而已,你还是用喊的,难道不能小声的说吗?为什么总是要用喊的?”教授又问。       几乎所有的学生都七嘴八舌的说了一堆,但是没有一个答案是让教授满意的,最后教授解释说:“当两个人在生气的时候,心的距离是很远的,而为了掩盖当 中的距离使对方能够听见,于是必须用喊的,但是在喊的同时人会更生气,更生气距离就更远,距离更远就又要喊更大声……” ...
      线程操作经常用到wait和notify,用起来稍显繁琐,而Android给我们封装好了一个ConditionVariable类,用于线程同步。提供了三个方法block()、open()、close()。 void block() 阻塞当前线程,直到条件为open void block(long timeout) 阻塞当前线程,直到条件为open或超时 void open() 释放所有阻塞的线程 void close() 将条件重置为close       下面讲一个实际的例子。用ConditionVariable实现自定义长按事件。前面讲过自定义长按 ...
    Android系统自带了长按事件,setOnLongClickListener即可监听。但是有时候,你不希望用系统的长按事件,比如当希望长按的时间更长一点的时候。这时候就需要自己来定义这个长按事件了。     下面是去年我写代码的时候,自定义长按事件的方式: package chroya.fun; import android.content.Context; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; publ ...
      Java中的很多对象都override了equals方法,都知道,这是为了能比较两个对象是否相等而定义,如果不需要比较,则不需要定义equals方法。比如StringBuffer类,没有提供equals方法,则说明没有两个StringBuffer对象是相等的。再比 ...
    做Home程序的时候,由于需要提供时间日期的设置功能,所以需要修改系统时间。修改时间的代码很简单,就那么一句,但是要让它生效可就不那么容易了。     修改系统时间的条件是,你的程序的user id必须跟system一样,也就是说,需要system权限。     怎样达到这个条件呢?     Android提供了sharedUserId来设置程序归属哪个user id,我们在程序的manifest文件里面加上如下属性 android:sharedUserId="android.uid.system"     这样还不行,因为这样编译出来的apk安装不了。 ...
Global site tag (gtag.js) - Google Analytics