android intent,activity,window
android获得屏幕高度和宽度(display中getSize(Point)方法使用)
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
diswidth = getContext().getResources().getDisplayMetrics().widthPixels;
disheight = getContext().getResources().getDisplayMetrics().heightPixels;
View.VISIBLE、INVISIBLE、GONE的区别
android中UI应用的开发中经常会使用view.setVisibility()来设置控件的可见性,其中该函数有3个可选值,他们有着不同的含义:
View.VISIBLE--->可见
View.INVISIBLE--->不可见,但这个View仍然会占用在xml文件中所分配的布局空间,不重新layout
View.GONE---->不可见,但这个View在ViewGroup中不保留位置,会重新layout,不再占用空间,那后面的view就会取代他的位置,
所以在使用时要小心,尤其要善用INVISIBLE和GONE;
1、自定义控件,继承相应的控件。
2、在构造函数中填充一个merge布局
3、初始化自定义控件中的内部View
4、提供刷新View的接口
[Android] Activity怎么获取contentView? 自定义getContentView()
对Activity而言,可以这么获取:
private View getContentView(){ return this.findViewById(android.R.id.content); }
Android Fragment onCreateView方法调用时间
关于fragment多次调用onCreateView的问题
关于解决页面跳转(startActivityForResult )你还有不知道的!
View 的关键生命周期为 [改变可见性] --> 构造View --> onFinishInflate --> onAttachedToWindow --> onMeasure --> onSizeChanged --> onLayout --> onDraw --> onDetackedFromWindow
Android的onActivityResult不被调用的解决方案 good
Android中Message传递参数(bundle setData方式传递)
Android的Fragment中onActivityResult不被调用的终极解决方案
Android Activity、Fragment之间的数据传递和返回
android消息广播Intent传递数据 good
Android开发之Android Context,上下文(Activity Context, Application Context)
Android之Activity的几种跳转方式
Android之Activity的四种启动模式
android在非Activity下,intent页面跳转问题
View
、Window
以及Activity
主要是用于显示并与用户交互的。
Surface
其实就是一个持有像素点矩阵的对象,这个像素点矩阵是组成显示在屏幕的图像的一部分。我们看到显示的每个Window
(包括对话框、全屏的Activity
、状态栏等)都有他自己绘制的Surface
。而最终的显示可能存在Window
之间遮挡的问题,此时就是通过Surface Flinger
对象渲染最终的显示,使他们以正确的Z-order
显示出来。一般Surface
拥有一个或多个缓存(一般2个),通过双缓存来刷新,这样就可以一边绘制一边加新缓存。
WindowManager
为每个Window
创建Surface
对象,然后应用就可以通过这个Surface
来绘制任何它想要绘制的东西。而对于WindowManager
来说,这只不过是一块矩形区域而已。
前面我们说过,View
是Window
里面用于交互的UI
元素。Window
只attach
一个View Tree
,当Window
需要重绘(如,当View
调用invalidate
)时,最终转为Window
的Surface
,Surface
被锁住(locked
)并返回Canvas
对象,此时View
拿到Canvas
对象来绘制自己。当所有View
绘制完成后,Surface
解锁(unlock
),并且post
到绘制缓存用于绘制,通过Surface Flinger
来组织各个Window
,显示最终的整个屏幕。
Window
为了绘制出用户想要的组件(按钮、文字、输入框等等),系统又不给我!没事,那我自己定义,于是就定义了View
机制,给每个View
提供Canvas
,让不同的View
自己绘制具有自己特色的组件。同时,为了更好的管理View
,通过定义ViewGroup
,等等。
对于开发人员来说,一个Activity
就“相当于”一个界面(通过setContentView
指定具体的View
)。我们可以直接在Activity里处理事件,如onKeyEvent
,onTouchEvent
等。 并可以通过Activity
维护应用程序的生命周期。
Activity、View、Window的理解一篇文章就够了 有图
Android 中的Activity、Window、View之间的关系
android设备投屏技术🔥:协议&概念
Android MVP设计架构优化(灵活、方便迭代)