摘要: Proguard用于混淆java代 码,使代码变为由难懂的,无规律的字符命名的各种方法和类,保护自己的劳动成果。个人认为proguard混淆纯java项目比较理想,比如j2me的 MIDLET,如果项目是web项 目,特别是使用Struts+Spring+Hibernate架构的,由于牵涉到很多需要反射的类,所有不适合把整个项目进行混淆。可以从这里下载到最新的Proguard源代码和API文档。下载的lib文件夹内包含3个jar包,proguard.jar是proguard的主程序,proguardgui.jar为图形界面,用这个可以很方便的生成proguard的配置文件,Retrace为反追 阅读全文
posted @ 2013-10-25 16:59 土金 阅读(2548) 评论(1) 推荐(1) 编辑
摘要: 1、ViewFlipper1)View切换的控件—ViewFlipper介绍ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAni 阅读全文
posted @ 2013-10-24 14:18 土金 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 正文 一、结构public final class ViewTreeObserver extends Object java.lang.Object android.view.ViewTreeObserver 二、概述 用于注册监听的视图树观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。ViewTreeObserver不能够被应用程序实例化,因为它是由视图提供,参照getViewTreeObserver()以查看更多信息。 三、内部类 interface ViewTreeObserver.O... 阅读全文
posted @ 2012-11-19 14:44 土金 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例:public class MyImageView extends ImageView { public MyImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MyImageView(Context context) { super(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMea.. 阅读全文
posted @ 2012-11-14 15:06 土金 阅读(361) 评论(0) 推荐(0) 编辑
摘要: Callable 和 Runnable 的使用方法大同小异, 区别在于: 1.Callable 使用 call() 方法, Runnable 使用 run() 方法 2.call() 可以返回值, 而 run()方法不能返回。 3.call() 可以抛出受检查的异常,比如ClassNotFoundException, 而run()不能抛出受检查的异常。 Callable示例如下:Java代码:class TaskWithResult implements Callable<String> { private int id; public TaskWithResult(int id) 阅读全文
posted @ 2012-09-07 14:27 土金 阅读(904) 评论(0) 推荐(0) 编辑
摘要: 今天学习android自定义组件:docs/guide/topics/ui/custom-components.html其中有两个对布局界面影响很的方法,onDraw(),和onMeasure().onDraw()比较好理解.onMeasure()就比较难理解一些,也更复杂些 ,引用文档中的说法就是:实现onMeasure()方法基本需要完成下面三个方面的事情(最终结果是你自己写相应代码得出测量值并调用view的一个方法进行设置,告诉给你的view安排位置大小的父容器你要多大的空间.):1.传递进来的参数widthMeasureSpec和heightMeasureSpec是你对你应该得出来的测 阅读全文
posted @ 2012-08-28 14:10 土金 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 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. 阅读全文
posted @ 2012-08-28 11:28 土金 阅读(1185) 评论(0) 推荐(0) 编辑
摘要: GradientDrawable 支持使用渐变色来绘制图形,通常可以用作Button或是背景图形。GradientDrawable允许指定绘制图形的种类:LINE,OVAL,RECTANGLE或是RING,颜色渐变支持LINEAR_GRADIENT,RADIAL_GRADIENT和SWEEP_GRADIENT。其中在使用RECTANGLE(矩形),还允许设置矩形四个角为圆角,每个圆角的半径可以分别设置:public void setCornerRadii(float[] radii)radii 数组分别指定四个圆角的半径,每个角可以指定[X_Radius,Y_Radius],四个圆角的顺序为左 阅读全文
posted @ 2012-08-28 11:01 土金 阅读(3313) 评论(0) 推荐(0) 编辑
摘要: 然后是分别建立三个文件,第一个是main.class,第二个是SlipButton.class,第三个是 onchangeListener.classmain.classimport Android.app.Activity;import Android.os.Bundle;import Android.widget.Toast;public class Main extends Activity implements OnChangedListener { @Override public void onCreate(Bundle savedInstanceState) { super.o. 阅读全文
posted @ 2012-07-13 10:02 土金 阅读(262) 评论(0) 推荐(0) 编辑