-
实现界面ContentView的保存与传递?实现XML动态加载布局(思路不正确,改变实现形式)
-
跨进程通讯可选用: AIDL、文件、socket
通过saveInstanceState实现界面的传输?(思路不正确,改变实现形式)
界面通过对view关键性信息进行保存,如控件包名 控件背景 宽 高 等信息。 对1进行思路修改:
-
自定义协议进行View相关内容的保存(通过链表以多叉树的形式保存)
-
将对象输出到文件目录(文件共享形式实现跨进程)
-
进行文件目录的传输
-
进行文件目录的读取并通过先序遍历还原为View
-
将View根据Tree的形式添加到界面中(递归遍历添加)
-
屏幕适配
对1进行思路另一种实现形式:通过XML实现界面的复制?
-
在Activity的OnCreate()事件输出view的x、y、height、width等参数全为0,要等UI控件都加载完了才能获取到这些数据。
//直接调用textview.measuredWidth,textview.measuredHeight只能得到0,需首先调用下列方法 //通过反射获取控件名称 String content = ((TextView)childView).getText().toString(); String name = childView.getClass().getName(); //获取宽、高 childView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); int width = childView.getMeasuredWidth(); int height = childView.getMeasuredHeight(); //获取坐标 int[] locations = new int[2]; childView.getLocationOnScreen(locations); int x = locations[0]; int y = locations[1];
详情:https://www.jianshu.com/p/d18f0c96acb8
-
将数据类实现Serializable接口进行存储
-
权限动态申请
-
获取全部子view
/** * 通过递归获取全部的子view * @param parentView * @return */ public static ArrayList<View> getAllChildViews(View parentView){ ArrayList arrayList = new ArrayList(); if (parentView instanceof ViewGroup) { ViewGroup viewGroup = (ViewGroup) parentView; for (int i = 0; i < viewGroup.getChildCount(); i++) { View childView = viewGroup.getChildAt(i); arrayList.add(childView); arrayList.addAll(getAllChildViews(childView)); } } return arrayList; }
-
view无法直接进行width和height的设置,需要使用LayoutParams进行转化
-
自定义View通过findviewbyid返回为null解决方法原因是在自定义View的时候自动生成了一个只有一个带context的构造函数,而通过XML文件创建的view对象为两个参数即(context,attr)的对象,手动添加第二个构造函数之后,没有把super里面的第二个参数加上。
-
DecoreView子view包含title和contentView
-
view的背景颜色通过获取坐标?
-
通过反射创建自定义view的时候失败
原因:代码中反射创建时参数个数不正确
- 获取ViewGroup的宽度和高度不正确?