三大特性:①封装(隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变量隔离便于使用,提高代码的服用小和安全性);②继承(提高代码的复用性,继承是多态的前提);③多态(父类或接口定义的引用变量可以指向子类或具体实现类的形象,提高了程序的拓展性)。
五大原则:单一职责、开放封闭、里氏替换、依赖倒置、接口分离。
数据类型:byte 1个字符,short 、char2 个字符,int 、float 4个字符,long 、double 8个字符。
String不可变原因:字符串常量池的需要;运行String对象缓存HashCode,提高效率;多线程安全。
String 转integer的方法和原理
1、Integer.parseInt(String str)调用Integer内部的;
2、Integer.parseInt(String s, int radix)parseInt内部首先判断字符串是否包含符号(-或者+),则对相应的negative和limit进行赋值,然后再循环字符串,对单个char进行数值计算
3、Character.digit(char ch, int radix) 返回指定基数中字符表示的数值。函数肯定进入到0-9字符的判断(相对于string转换到int),否则会抛出异常,数字就是如上面进行拼接然后生成的int类型数值。
限定参数类型的上界:参数类型必须是T或T的子类型。
<? super T> 限定参数类型的下界:参数类型必须是T或T的超类型。
equal:存储空间的值是否相同,字符串内容比较,值是否相同。
==;是否为同一内存空间,内存空间是否相同,引用是否相同
onCreate() : 完成Fragment的初始化
onCreateView() : 加载Fragment布局,绑定布局文件
onActivityCreated() : 表名与Fragment绑定的Activity已经执行完成了onCreate,可以与Activity进行交互操作。
onStart() : Fragment变为可见状态
onResume() : Fragment变为可交互状态
onPause(): Fragment变为不可交互状态(不代表不可见)
onSaveInstanceState():保存当前Fragment的状态。记录一些数据,比如EditText键入的文本,即使Fragment被回收又重新创建,一样能恢复EditText之前键入的文本。
onStop(): Fragment变为不可见状态
onDestroyView() : 销毁Fragment的有关视图,但并未和Activity解绑,可以通过onCreateView()重新创建视图。Fragment销毁时或者ViewPager+Fragment情况下会调用
onDestroy() : 销毁Fragment时调用
onDetach() : 解除和Activity的绑定。Fragmen销毁最后一步。
View子类
时钟(AnalogClock、DigitalClock、Chronometer)
第一第二个为模拟时钟和数字时钟,第三个为计时器。
Chronometer的用法:
setBase(long base):设置计时器的起始时间
setFormat(String format):设置显示时间的格式
start():开始计时
stop():停止计时
setOnChronometerTickListener(Chronometer.OnChronometerTickListener):为计时器绑定时间监听,当计时器改变时触发该监听器。
获取系统时间的种类和区别(SystemClock):
1. 、System.currentTimeMillis(): 该时间是基于世界时间的,它返回的是从January 1, 1970 00:00:00 UTC到现在时间已经逝去了多多少millisecond,当我设置Android手机的系统时间时,会应该影响该值.
2、uptimeMillis(): 它表示的是手机从启动到现在的运行时间,且不包括系统sleep(CPU关闭)的时间,很多系统的内部时间都是基于此,比如Thread.sleep(millls), Object.wait(millis), and System.nanoTime()
3、elapsedRealtime(): 它表示的是手机从启动到现在的运行时间,且包括系统sleep(CPU关闭)的时间。
图像视图(ImageView)
使用之前最好先如下操作:
BitmapDrawable bitmapDrawable = (BitmapDrawable)image.getDrawable();
If(!bitmapDrawable.getBitmap().isRecycled())
{
bitmapDrawable.getBitmap().recycle();
}
然后再设置image的值。
通过image可以得到Drawable对象,然后可以得到Bitmap对象,我们的主要操作都是针对Bitmap进行的,image只是在手机上显示的区域,而Bitmap则是你真实的图片,大小与显示的区域有不同。比如我们点击图片上某一个点,这个点的坐标是相对于image的坐标,但是如果我们需要对真实的图片进行操作的话,则需要将这个点的坐标进行相应的缩放倍数的增减。
fragment之间传递数据的方式
1.在相应的fragment中编写方法,在需要回调的fragment里获取对应的Fragment实例,调用相应的方法;
2.采用接口回调的方式进行数据传递;
a)在Fragment1中创建一个接口及接口对应的set方法;
b)在Fragment1中调用接口的方法;
c)在Fragment2中实现该接口;
3.利用第三方开源框架EventBus
service和activity要进行数据交互可以
通过bindService启动服务,
可以在ServiceConnection的onServiceConnected中获取到Service的实例,这样就可以调用service的方法,如果service想调用activity的方法,可以在service中定义接口类及相应的set方法,在activity中实现相应的接口,这样service就可以回调接口;