Android知识点整理

1.在View的OnTouch事件中获取坐标,有两个方法getRawx(),getX,第一个是获取到的基于整个屏幕的坐标(绝对坐标),第二个是在父控件中的坐标(视图坐标)。

2. offsetLeftAndRight(offset)
offsetTopAndBottom(offset)

这两个方法在设置View偏移的时候起作用,可同时移动是对左右,上下方法的封装。

3.LayoutParams 类是对View 中布局,位置,大小参数的封装。要使用View的该属性动态的改变View的大小等,前提是View必须要有父布局,并且得到的LayoutParams必须要强制转换成父布局多对应的LayoutParams,然后设置属性。

LinearLayout.LayoutParams	layoutParam=(LinearLayout.LayoutParams) view.getLayoutParams();
也可以直接使用下面的方法,忽略父类的布局,设置View的Margin值改变,但前提是View必须是有父布局的。
ViewGroup.MarginLayoutParams params=(ViewGroup.MarginLayoutParams)view.getLayoutParams();

4.setContentView(R.layout.value)这个方法可以多次调用,但是显示的布局总是会被最后一次设置的布局覆盖,但是被覆盖的的View仍然是加在了View树上。

5.Android 系统中已经提供的单位换算,dpTopx等

TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,value, getResources().getDisplayMetrics());
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, value, getResources().getDisplayMetrics());
6.(1)XMl中的绘图技术,可以自己使用下面方法,将图片直接转换成Bitmap

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="" >
</bitmap
  (2),shape文件的属性
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >--指定图形(oval,Line,ring)

    <corners  //---------------设置圆环角度
        android:bottomLeftRadius=""
        android:bottomRightRadius=""
        android:radius="2dp"
        android:topLeftRadius=""
        android:topRightRadius="" >
    </corners>
    <gradient></gradient>渐变
    <padding></padding>边距值
   <size></size>大小
   <solid></solid>填充颜色
  <stroke android:width="" android:color=""></stroke>边框
</shape>

(3)layer-list实现图层的嵌套

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
   <item android:drawable="">
       
   </item>
    <item android:drawable="">
       
   </item>
</layer-list

(4)selector中可以嵌套shape文件作为item

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape></shape>
    </item>
</selector>

6.判断scrollview中某子控件是否可见

Rect scrollBounds = new Rect();
scrollView.getHitRect(scrollBounds);
if (childView.getLocalVisibleRect(scrollBounds)) {
    //子控件至少有一个像素在可视范围内
    // Any portion of the childView, even a single pixel, is within the visible window 
} else { 
    //子控件完全不在可视范围内
    // NONE of the childView is within the visible window 
} 

7.创建透明的Drawable,用于为Popwindow 设置背景颜色,防止Popwindow点击外部不消失

Drawable drawable=new ColorDrawable(Color.TRANSPARENT);
8.动态注册广播与静态注册广播的区别

动态注册广播后只有在应用打开后才能接收到广播,但静态注册广播后,在应该关闭转态下仍然能够接受到广播

广播分为有序广播和无序广播,本地广播:

(1)有序广播发送

sendOrderedBroadcast();
(2)无序广播发送
sendBroadcast();
(3)本地广播借用一个类完成
LocalBroadcastManager;
9 Gson的使用 如果需要转换的类包括泛型,那么也需要用到TypeToken,通过这个类可以获取具体的类型
Gson gson = new Gson();
//序列化
MyObject myobj = new MyObject();  
String jsonstr = gson .toJson(myobj);
//反序列化
MyObject myobj = gson.fromJson(jsonstr, MyObject.class);  
//序列化数组
String[] days = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
String numbersJson = gson.toJson(days);
//序列化集合
List<String> myobjs = new ArrayList<String>();
String jsonstr = gson.toJson(myobjs);
//反序列化集合数组
List<MyObject> myobjs = gson.fromJson(str, new TypeToken<ArrayList<MyObject>>(){}.getType());
// Deserialization
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
Collection<Integer> ints2 = gson.fromJson(json, collectionType);
10.内存不足时的回调方法
onLowMemory& onTrimMemory简介:
OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory。
OnTrimMemory是Android 4.0之后提供的API,系统会根据不同的内存状态来回调。根据不同的内存状态,来响应不同的内存释放策略。
11.
利用Android Framework里面优化过的容器类,例如SparseArray, SparseBooleanArray, 与 LongSparseArray。 通常的HashMap的实现方式更加消耗内存,因为它需要一个额外的实例对象来记录Mapping操作。
另外,SparseArray更加高效在于他们避免了对key与value的autobox自动装箱,并且避免了装箱后的解箱。
使用ProGuard来剔除不需要的代码
ProGuard能够通过移除不需要的代码,重命名类,域与方法等方对代码进行压缩,优化与混淆。使用ProGuard可以使得你的代码更加紧凑,这样能够使用更少mapped代码所需要的RAM。
 对最终的APK使用zipalign
在编写完所有代码,并通过编译系统生成APK之后,你需要使用zipalign对APK进行重新校准。如果你不做这个步骤,会导致你的APK需要更多的RAM,因为一些类似图片资源的东西不能被mapped。
Notes: Google Play不接受没有经过zipalign的APK














         


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值