安卓界面编程

       安卓所有的UI组件都继承自View类,ViewGroup是View的一个重要子类,可以作为其他组件的容器用。安卓使用 XML 文件实现对界面UI组件的布局,与之对应的是一个名为 R的Java 类资源文件。当在XML文件中进行布局时, R.java 文件自动跟进布局内容的变化。这样的设计体现了MVC原则,实现了视图控制与Java代码两者的分离。安卓同样支持在Java文件中实现界面布局(如同Swing组件开发),但是不推荐啦。可以这样搭配: 相对比较固定的布局在XML文件中完成,灵活多变的布局在java文件中完成。
     
     1.自定义组件:
      
      用户可以通过继承View类,并根据需要重写其方法,自定义满足特定业务需要的组件。可重写的方法可包括:
    • onFinishInflate():当应用从XML布局文件中加载该组件并利用其创建界被面之后掉用。
    • onMeasure(int,int):调用该方法来检测View组件及其包含组件的的大小。
    • onLayout(boolean,int,int,int,int):当该组件需要分配其子组件的位置及大小时被调用。
    • onSizeChanged(int,int,int,int)
    • onDraw(Canvas)
    • onKeyDown(int,KeyEvent)、onKeyUp(int,KeyEvent)
    • onTrackballEvent(MotionEvent):当发生轨迹球事件时调用
    • onTouchEvent(MotionEvent)
    • onWindowFocusChanged(boolean)
    • onAttachenToWindow(),onDetachendFromWindw():当组件加入窗口/与分离时调用。
    • onWindowVisibiltyChanged()
      2.布局管理器:
     
     不同手机屏幕尺寸各不相同,为很好地解决在不同环境下的布局为,需要使用Android提供的布局管理器。
       2.1线性布局
     LinearLayout的一个突出特点是 不换行(超出屏幕的内容即不显示)。
     常用XML属性:
     android:gravity,设置组件的对其方式,居左、中、右等,通过竖线分隔,可设置多属性。
     android:orientation,设置组件的排列方式horizontal--水平  vertical--垂直。
      2.2表格布局
     TableLayout继承自LinearLayout,可以视作一行行的LinearLayout的组成了TableLayout。 每次向TableLayout中添加一个TableRow即增加一行,在TableRow中添加一个组件即增加了一列。
     表格布局中,单元格设置有三种:
     Shrinkable:该列单元格可以被收缩
     Strethchable:该列单元格可以被拉伸
     Collapsed:该列单元格被隐藏
      2.3帧布局
     FrameLayout,直接继承自ViewGroup,把组件一个一个的叠加在一起,用的比较少。
      2.4相对布局
     RelativeLayout,其内部组件位置总是相对于父兄组件。
     内部组件通过如下属性设置目标组件ID来确定组件位置:
     android:layout_toLeftOf
     android:layout_toRightOf
     android:layout_alignTop
     android:layout_below
     android:layout_above
      2.5绝对布局
     通过android:layout_x与android:layout_y这两个属性设置绝对数值作为位置。一般不推荐用。
     距离单位:
     px:像素,每个px对应屏幕上一个点。
     dip或dp:设备独立像素。
     sp:比例像素,主要处理字体的大小。
     in:英寸
     mm:毫米
     pt:磅

     3.其他:
      3.1 9match图片
      所谓"*.9.png"这是Android os里所支持的一种特殊的图片格式,用它可以实现部分拉伸;这种图片是经过”9妹“进行特殊处理过的,如果不处理的话,直接用PNG图就会有失真,拉伸不正常的现象出现。第一次做背景填充时,不明所以,扇子改了图片的扩展名,以至于背景填充失真的厉害,特别丑。
































  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值