《Android群英传》作者
Android 开发中使用的颜色可以分为两种,自定义颜色和系统颜色 1.自定义颜色: 颜色值的定义是通过RGB三原色和一个alpha值来定义的(加色原理)。以井号(#)开始,后面是Alpha-Red-Green-Blue的格式。
android组件中的onTouch,onClick,onLongClick事件发生先后顺序和关联: 一,onTouch返回false 首先是onTouch事件的down事件发生,此时,如果长按,触发onLongClick事件; 然后是onTouch事件的up事件发生,up完毕,最后触发onClick事件。
Android ADB命令使用: adb remount adb shell su //和linux命令相同 ls re -r adb devices 查看当前设备 adb install 安装指定软件 adb uninstall 卸载 adb push 复制到手机 ad...
先看Application Fundamentals上的一段话: Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but...
上一篇我们讲解了Fragment的加载方式,这次我们以一个实例来讲解: 布局: 以上布局文件中使用了fragment标签和FrameLayout标签。Android Fragment使用 中介绍了2中嵌入Fragment的方法,这个实例中都用到,从布局文件看到有了fragment标签,这是一种使用方法,FrameLayout标签将会成为第二种加载fragment的载体view。
fragment做为宿主activity UI的一部分, 被作为activity整个view hierarchy的一部分被嵌入. 有2种方法你可以添加一个fragment到activity layout: 一、在activity的layout文件中声明fragment 你可以像为View一样, 为fragment指定layout属性(sdk3.
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果。 一、添加ActionBar 1、不需要导入ActionBar,因为在android3.
Fragment是Android自从3.0之后新加入的一个组件,我相信很多人都已经听说过这个组件了,但这个组件到底是个什么,如何去使用他呢,且听我讲来。 以下部分资料来自官网(官网才是王道,其他都是浮云) 一、Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。
对于这两个属性来说: layout_gravity 表示组件自身在父组件中的位置 gravity 表示组件的子组件在组件中的位置 1、在使用时,最外层的LinearLayou的属性:androidrientation="?"是不能少的。
Android的UI设计一直是Android程序员比较苦恼的一件事,本文主要讲解如何将一些模板类控件进行复用,从而简化UI的开发。 如图: 我们很多程序的界面中,顶部的TopBar是不变的,所以,我们可以做一个公用的控件模板,每次使用时,只要设置相应的参数,就能生成这样一个TopBar。
享元模式(Flyweight):享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。
组合模式(Composite):组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图: public class TreeNode { private String name; private TreeNode parent; private Vec...
桥接模式(Bridge):桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。
外观模式(Facade):外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例) 实现类: ...
代理模式(Proxy):其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的带你就是这个意思。
装饰模式(Decorator):顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如...
适配器模式(Adapter):适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。
原型模式(Prototype): 原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。
建造者模式(Builder) 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。
单例模式(Singleton): 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
抽象工厂模式(Abstract Factory) 工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
工厂方法模式(Factory Method)分为3种: 1、普通工厂模式 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图: 我们以一个例子来讲解:发送短信和发送邮件(具有共同的接口:发送) 接口: public interface Sender { ...
去除ListView滑到顶部和底部时边缘的黑色阴影: android:fadingEdge="none" ---------------------------------------------------- 去除拖动时默认的黑色背景: android:cacheColorHint="#00000000" 或 listView.
从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位于framework的android.media.ThumbnailUtils位置,可以帮助我们从mediaprovider中获取系统中的视频或图片文件的缩略图,该类提供了三种静态方法可以直接调用获取。
Oracle真的很难卸载。。。。 1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。
layout_weight用于在LinearLayout中实现控件空间分配的按比例分配 我们可以使用layout_weight来实现html中的table效果 一、LinearLayout内的控件的layout_width设置为"wrap_content" 布局1: ...
贝塞尔曲线 贝塞尔曲线(The Bézier Curves),是一种在计算机图形学中相当重要的参数曲线(2D,3D的称为曲面)。贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所发表,他运用贝塞尔曲线来为汽车的主体进行设计。
在Java中我们需要对一个数字进行四舍五入处理或者是对一个字符串进行格式化处理,我们需要使用String.Format方法或者其他格式化方法 一、Format方法 比如:DecimalFormat df = new DecimalFormat("#.
1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这 这个,不依赖像素。
Canvas 作为绘制文本时,是以基线为基准绘制的,不是左上角 FontMetrics对象 它以四个基本坐标为基准,分别为: ・FontMetrics.top ・FontMetrics.
在前一篇日志中我们已经做好了日历控件的准备工作,今天我们将继续完成这个日历控件。 三、日历元素之Border 在Border类中,我们主要完成日历边框的绘制 package com.xys.
从今天开始,我们将一步步学习如何实现一个Android的日历控件,今天是第一天! 一、准备工作之配置参数 制作一个日历控件,我们首先要配置一些参数 1.尺寸 dimension.xml 10dp 48dp 10dp ...
Android 3.0之上的版本提供了一个日历控件。本例将讲解该控件的使用方法。 效果图如下: public class MainActivity extends Activity { /** Called when the activity is first created.
本文讲解android中的传感器,这是智能手机中的一个重要组成方面。 我们首先来讲解一下android手机中对坐标的定义: X轴的方向是沿着屏幕水平方向从左向右,较短的边需要水平放置,较长的变需要垂直放置 Y轴的方向是从屏幕的左下角开始沿着屏幕的垂直方向指向屏幕的顶端 Z轴是将手机平放在桌子上,从手机里指向天空 传感器使用到一个values数组,他一般具有三个参数,参数的意义和传感器类型有关。
在Android中调用摄像头进行拍照有两种方式,一种是使用系统的拍照Activity,另一种是使用Camera对象自己实现拍照功能 一、调用系统拍照Activity public class Main extends Activity implements OnClickListen...
转眼间,从实习到现在已经快1年了。2012,是我毕业的第一年,在上海独立工作的第一年,也是走向职场的第一年。在它的尾巴上,回望走过的足迹,看看过去的自己。 大四稀里糊涂的去面试,没怎么好好选择,就把自己卖了,当然,这个不是这次的主题,只是顺便告诉下学弟学妹,找工作就像买衣服,多去几家店看看,多比较下各方面的条件,不一定要买最贵的,但是一定要买自己最喜欢、最合适的。
有一幅二叉树, 最大深度为D. 且所有叶子的深度都相同. 所有结点从上到下从左到 右编号为1,2,3.….2D- l . 在结点1 有一个小球,它会往下落. 每个内结点上都有一个开 关,初始全部关闭,当每在有小球落到个开关上时, 开关都会改变. 当小球到这一 个内结点时.如果该结点上的开夫先闭, 贝小球往左走, 否则往右走,直到走到叶子结点, 如 图6-8 所示. 一些小球从结点1 处佳次开始下落,最后一个小草将会落到哪里?输入叶子深度D和小球个N数输出第N 个小球最后所在的叶子编号. 这道题的关键就在于对于一个节点K,左孩子是2N,右孩子是2N+1。
这个问题是比较入门的一个算法问题:题目和解答如下 /* * 有n 盏灯,编号为l-n. 第1 个人把所有灯打开,第2 个人按下所编号为2 的倍数 的开关〈这些灯将关掉) , 第3 个人接下所有辑号为3 的情数的开关〈其中共掉的灯将 披打开,开着的灯将关闭) ,依此类推.
1、插入排序:插入是比较简单的一种排序方法,基本思想就是把数据分组两段,一部分是有序,另一部分是待排序的。把有序的数据不断的加大到全数组完成排序。 从左到右将有序数组逐渐增大。 public class Sort { public void insertSort(int[] arrays) { for (int i = 0; i < arrays.
所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换这两个值,交换完成后,我们拿着这个key要从i往后遍历了,及i++;一直循环到i=j结束,当这里结束后,我们会发现大于这个key的值都会跑到这个key的后面,不是的话就可能你写错了,小于这个key的就会跑到这个值的前面;然后我们对这个分段的数组再时行递归调用就可以完成整个数组的排序。
公约数:假设有两个数a,b,所谓的公约数就是能把a,b整除的最大整数。 求最大公约数的方法有很多。 方法1:穷举法,即通过循环找到一个2个数都能整除的数 public class Divide { public int getMaxDivide(int a,int b){ i...
今天看到一道算法题:给定一长一短的俩个字符串A,B,假设A长B短,现在,要你判断B是否包含在字符串A中。 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案是true,所有在string2里的字母string1也都有。
今天看了一个大牛在网上写的关于算法的研究,感触颇深,所以写下跟随其脚步研究的过程。 定义:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。
使用MaskFilter MaskFilter类可以为Paint分配边缘效果。 对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换。Android包含了下面几种MaskFilter: BlurMaskFilter 指定了一个模糊的样式和半径来处理Paint的边缘。
Android平台下实现渐变效果。在android.graphics中我们可以找到有关Gradient字样的类,比如LinearGradient 线性渐变、RadialGradient径向渐变和 角度渐变SweepGradient 三种,他们的基类为android.graphics.Shader。
一般情况下,我们可以在android中这样定义一个字符串资源: 今天是%1$s,当前温度:%2$d. 其中%1,%2……表示占位符,从1到n,$s表示字符串,$d表示十进制整数。 在程序中使用时: tv.setText(getString(R.string.dymString,"星期1",20)) 这样讲参数传入。
本例讲解了一个在图片上绘制路径的实例,绘制的路径可以选择普通、浮雕、喷涂三种效果。 效果如下: 下面是实现方法: public class Main extends Activity implements OnColorChangedListener { private ...
android中定义的dimension单位有以下这些:px(Pixels ,像素):对应屏幕上的实际像素点。in(Inches ,英寸):屏幕物理长度单位。mm(Millimeters ,毫米):屏幕物理长度单位。
图像旋转的基本思想是通过Matrix类的setRotate方法设置旋转的角度,然后使用Bitmap.createBitmap方法创建一个已经旋转了的图像。除此之外,还可以使用Canvas.setMatrix方法设置,并直接使用drawBitmap绘制。
Android支持的颜色系统是RGB,Alpha最后的Alpha表示透明度,他的取值是0-255,。通过设置Alpha的值,我们可以改变图像的透明度。 下面举例说明,效果图如下: public class MainActivity extends Activity imple...