android intent,activity,window

Android中launchMode四种启动方法详解

android获得屏幕高度和宽度(display中getSize(Point)方法使用)

方案1:If you want the the display dimensions in pixels you can usegetSize:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
 
方案2: if you're not in an Activity you can get the default Display viaWINDOW_SERVICE:
display = ((WindowManager)context.getSystemService(context.WINDOW_SERVICE)).getDefaultDisplay();
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;

 

Android自定义View的用法总结

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 )你还有不知道的!

 

深入理解android view 生命周期

View 的关键生命周期为    [改变可见性]  -->   构造View   -->      onFinishInflate  -->   onAttachedToWindow  -->  onMeasure  -->  onSizeChanged  -->  onLayout  -->   onDraw  -->  onDetackedFromWindow

 

 Android的onActivityResult不被调用的解决方案 good

Android中Message传递参数(bundle setData方式传递)

Android的Fragment中onActivityResult不被调用的终极解决方案

 Android Activity的四种经典传值方法

Android Activity、Fragment之间的数据传递和返回

android消息广播Intent传递数据 good

 

Android开发之Android Context,上下文(Activity Context, Application Context)

Android之Activity的几种跳转方式

Android之Activity的四种启动模式

android在非Activity下,intent页面跳转问题

 

理清Activity、View及Window之间关系

ViewWindow以及Activity主要是用于显示并与用户交互的。

Surface其实就是一个持有像素点矩阵的对象,这个像素点矩阵是组成显示在屏幕的图像的一部分。我们看到显示的每个Window(包括对话框、全屏的Activity、状态栏等)都有他自己绘制的Surface。而最终的显示可能存在Window之间遮挡的问题,此时就是通过Surface Flinger对象渲染最终的显示,使他们以正确的Z-order显示出来。一般Surface拥有一个或多个缓存(一般2个),通过双缓存来刷新,这样就可以一边绘制一边加新缓存。

WindowManager为每个Window创建Surface对象,然后应用就可以通过这个Surface来绘制任何它想要绘制的东西。而对于WindowManager来说,这只不过是一块矩形区域而已。

前面我们说过,ViewWindow里面用于交互的UI元素。Windowattach一个View Tree,当Window需要重绘(如,当View调用invalidate)时,最终转为WindowSurfaceSurface被锁住(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设计架构优化(灵活、方便迭代)

 

posted @ 2017-09-12 20:12  米粥米  阅读(157)  评论(0编辑  收藏  举报