1:坐标系:
CrossApp采用的坐标系是屏幕坐标系,即左上角为原点,向右为X轴增长方向、向下对应Y轴增长方向
视图类CAView是整个CrossApp引擎最基本的类,负责将各式各样的界面呈现出来,我们在App中所能看见的的一切界面其实就是一个个CAView的组合。CAView负责在屏幕上定义矩形区域,在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象要负责渲染试图矩形区域中的内容,并响应该区域内发生的操作事件,视图是应用程序用户交互的重要机制。
除了显示内容和处理事件之外,试图还可以管理一个或多个子视图。我们可以在一个view上面添加多个子view,而作为父view,即父节点,负责管理其直接子视图,并根据需要调整他们的位置和尺寸,以及响应他们没有处理的事件。
根据类说明我们可以得出以下结论:1、所有能看到的都是CAView的派生类。2、CAView上面可以添加子CAView。3、父节点管理子视图
坐标系有3个属性 Frame Bounds Center,Bounds就是说不能缩放,cocos2d-x当中也有这个类似的;
2:屏幕适配:
PX:pixels,就是绝对像素。大小固定,不会随着屏幕不同而改变
PPI:Pixels Per Inch所表示的是每英寸所拥有的像素(Pixel)数目。因此PPI数值越高,即代表显示屏能够以越高的密度显示图像。当然,显示的密度越高,拟真度就越高。
DPI:每英寸所包含的点,在Android设备上,通常以DPI来表示设备屏幕的显示精细度。通常情况下,PPI和DPI可以表示同一个概念,PPI主要针对显示设备,DPI更多应用于打印输出设备,但都表示每英寸所包含的像素点
CrossApp提供的dip与px相互转换
将dip转为px
_px(float dip):static inline float _px(float dip) { return dip * CAApplication::getApplication()->getAdaptationRatio(); }
将px转为dip
_dip(float px):static inline float _dip(float px) { return px / CAApplication::getApplication()->getAdaptationRatio(); }
CrossApp提供的Dip类型数据
CADipPoint:点
CADipSize:面积
CADipRect:区域(包含一个点位点和面积)
void FirstViewController::viewDidLoad()
{
// Do any additional setup after loading the view from its nib.
//获得屏幕的Bounds 大小不缩放
CCRect winRect = this->getView()->getBounds();
//获得屏幕的大小 CADipSize里面进行了适配处理
CADipSize winSize = winRect.size;
//
CAView* winView = CAView::createWithColor(CAColor_green);
//设置 Frame
winView->setFrame(CADipRect(0,0,winSize.width,winSize.height));
//添加到根节点
this->getView()->addSubview(winView);
CAView* winView2 = CAView::createWithColor(CAColor_yellow);
//尽量 按比例添加 不要写 400,500等数字,不然屏幕大小变了之后,winView2不会按比例跟着变化
winView2->setFrame(CADipRect(0, winSize.height - winSize.height / 3, winSize.width / 3, winSize.height / 3));
this->getView()->addSubview(winView2);
CAView* winView3 = CAView::createWithColor(CAColor_red);
//
winView3->setFrame(CADipRect(winView2->getFrame().size.width,
winSize.height - winView2->getFrame().size.height - winSize.height / 3,
winSize.width / 3, winSize.height / 3));
this->getView()->addSubview(winView3);
}