摘要:android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。该类有如下几个和动画相关的函数:l setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为 android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义 Animation的resourceID。setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAni
阅读全文
摘要:数据线丢了,不想花钱去买,在网上看了看,android手机居然可以通过wifi进行程序的调试,太好了,自己搞了一下,虽然网上写的很详细,但是还是有些问题,记录下来,下次参考。1.首先让android手机监听指定的端口: 这一步需要使用shell,因此手机上要有终端模拟器,不过网上很多,随便找个就行了,依次敲入下列几行:1 su//获取root权限2 setprop service.adb.tcp.port 5555//设置监听的端口,端口可以自定义,如5554,5555是默认的3 stop adbd//关闭adbd4 start adbd//重新启动adbd2.手机连...
阅读全文
摘要:在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。 方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。paint.setAntiAlias(true);paint.setAntiAlias(true); 方法二:给Canvas加上抗锯齿标志。有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。canvas.setDrawFilter(newPaintFlagsDrawFilter(0,Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));canva
阅读全文
摘要:之前在程序中有打了很多的log,当初打log的方式也没有统一,删掉肯定不行,统一修改也挺麻烦的。今天在stackoverflow上面看到有对这个的讨论主要有以下三种方式关闭log信息http://stackoverflow.com/questions/2446248/deactivate-any-calls-to-log-before-publishing-are-there-tools-to-do-this方法一:[html] view plaincopyif(condition)Log.d(LOG_TAG,"Something");缺点:每打log都要做判断方法二:I
阅读全文
摘要:onMeasure方法在控件的父元素正要放置它的子控件时调用。它会问一个问题,“你想要用多大地方啊?”,然后传入两个参数—— widthMeasureSpec和heightMeasureSpec。它们指明控件可获得的空间以及关于这个空间描述的元数据。比返回一个结果要好的 方法是你传递View的高度和宽度到setMeasuredDimension方法里。 接下来的代码片段给出了如何重写onMeasure。注意,调用的本地空方法是来计算高度和宽度的。它们会译解widthHeightSpec和heightMeasureSpec值,并计算出合适的高度和宽度值。 Java代码: ...
阅读全文
摘要:TextView控件有一个方法是控制阴影的加入的:mTextView.setShadowLayer(10F, 11F,5F, Color.YELLOW); 第一个参数为模糊半径,越大越模糊。 第二个参数是阴影离开文字的x横向距离。 第三个参数是阴影离开文字的Y横向距离。 第四个参数是阴影颜色。第二种方式是将TextView控件的style单独写成一个.xml文件进行添加。res/values/styles.xml[html] view plaincopy<?xmlversion="1.0"encoding="UTF-8"?><resou
阅读全文
摘要:StaticLayout layout = new StaticLayout(context.getString(R.string.about),textPaint,(int)(300*fDensity),Alignment.ALIGN_CENTER,1.5F,0,false);layout.draw(canvas);参数含义:1.字符串子资源2 .画笔对象3.layout的宽度,字符串超出宽度时自动换行。4.layout的样式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE三种。5.相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。6.
阅读全文
摘要:Android早期的版本号有点“混乱”,比如Android 2.2对应的ADT版本为ADT-0.9.9而Android 2.3对应的的ADT版本则突然“跃迁”为 ADT-8.0.0.zip。而且Android SDK还包含SDK Tools和SDK Platform两个东西,它们的意义也不同,它们也有各自的版本号,因此有些人在此处容易混淆,下面将它们之间的对应关系进行一下简单的归纳:Android平台与SDK Tools版本、ADT版本的对应关系Android平台 SDK Tools的版本 ADT版本Android 2.2R7 ADT-0.9.9Android 2.3R8 ADT...
阅读全文
摘要:[html] view plaincopy在android4.0源码出来以后,关于sd卡问题似乎没有解决好,起码上层api中没有体现到位。其实在framework层中有相应的类去获得内外置sd卡信息,是否可读写的权限。 在2.x的版本中,在manifest中配置的权限android.permission.WRITE_EXTERNAL_STORAGE确实是用来使得sd卡获得写的权限。而在4.0开发的源码当中,由于有了内外置sd卡的区分,android.permission.WRITE_EXTERNAL_STORAGE 的权限用来设置了内置sd卡的写权限,如果在manifest中只是配置了这...
阅读全文
摘要://连续两次返回退出程序 private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeT...
阅读全文
摘要:先说一下apk的结构。APK采用了zip格式的压缩,我们可以很容易解压。一个APK文件结构为:META-INF/ Jar文件中常可以看到res/ 存放资源文件的目录AndroidManifest.xml 程序全局配置文件classes.dex Dalvik字节码resources.arsc 编译后的二进制资源文件apk下的文本文件是做了二进制处理的。如果我们只是想看APK 的Manifest信息。可以使用aapt命令。命名格式为:aapt dump badging *.apk (这里*.apk是你的apk名)aapt命令我们可以在SDK下对应版本下的tools文件夹下找到:这个是我的路径:C:
阅读全文
摘要:写这篇文章并不是教大家怎么样用listview异步加载图片,因为这样的文章在网上已经有很多了,比如这位仁兄写的就很好:http://www.iteye.com/topic/685986我也是因为看了这篇文章而受到了启发。先说说这篇文章的优点把,开启线程异步加载图片,然后刷新UI显示图片,而且通过弱引用缓存网络加载的图片,节省了再次连接网络的开销。这样做无疑是非常可取的方法,但是加载图片时仍然会感觉到轻微的卡屏现象,特别是listview里的item在进行快速滑动的时候。我找了一下原因,可能是在listview快速滑动屏幕的时候划过的item太多 而且每次调用getView方法后就会异步的在过去
阅读全文
摘要:一、什么是9.png: 可能做过任务栏美化的同学都会知道,***,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会看不见摸不着(详情见下面具体内容)。 9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子了,哈哈,这就是9.png图片不能...
阅读全文
摘要:FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。项目地址:http://www.fbreader.org/FBReaderJ/AngleAngle是一款专为Android平台设计的,适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现。项目地址:http://code.google.com/p/angle/android-shuffleandroid-shuffle是一个GTD(Gett
阅读全文
摘要:使用Android自带的TabHost容器。传统的TabHost的使用效果大概是这样的(左图):这是大众点评网早期的Android客户端,标签栏使用了系统自带的控件。然而这个效果和我们看到的很多底部标签栏相差甚远(右图,twitter客户端Twidroyd截图)。他们到底是怎么实现的呢?为此,我在网上查了不少资料,大致有以下种方案:Button Bar实现;修改TabWidget。1. Button Bar基本思路:用一个Layout来呈现整个标签栏,在上面添加若干按钮作为标签,整个Layout作为一个部件include到各个界面的布局里去。当用户点击按钮时,切换到相应的界面(多个Activi
阅读全文
摘要:Fragment 表现 Activity 中用UI的一个行为或者一部分. 可以组合多个fragment放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个 fragment.把fragment 想象成一个activity的模块化区域, 有它自己的生命周期, 接收属于它的输入事件, 并且可以在activity运行期间添加和删除.Fragment 必须总是被嵌入到一个activity中, 它们的生命周期直接被其所属的宿主activity的生命周期影响. 例如, 当activity被暂停,那么在其中的所有fragment也被暂停; 当activity被
阅读全文
摘要:本文摘自http://www.cnblogs.com/jiezzy/archive/2012/08/11/2633897.html?updated=1 http://yuanzhifei89.iteye.com/blog/1010497http://www.cnblogs.com/jiezzy/archive/2012/08/11/2633886.htmlhttp://blog.csdn.net/andypan1314/article/details/6632533http://www.cnblogs.com/jiezzy/archive/2012/06/11/2544788.html参考:h
阅读全文
摘要:在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序:Java代码 ActivityManageram=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);am.restartPackage(getPackageName());此种方法是一种最方便和最简单的退出程序的办法,但是在2.2和2.2之后就不能用了,那么如果我们要退出程序有4种办法:采用content view栈:如果程序是多界面,但是又没有强制要求每一个界面一个Activity,可以将每个界面设计为一个Vie
阅读全文
摘要:ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {return;}int totalHeight = 0;for (int i = 0; i < listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams
阅读全文
摘要:Activity的启动模式可以通过AndroidManifest.xml文件中的<activity>元素的属性来指定,一共有4中模式:?1<activity android:name="ActivityMain" android:launchMode="singleTask"></activity>standardsingleTop singleTask singleInstance 这4中模式又分两类,standard和signleTop属于一类, singleTask和signleInstance属于另一类。 st
阅读全文