Android入门-UI

1.UI的页面一般是使用布局资源表示的这样可以使表示层和逻辑层分开。一般布局文件都放在res中的layout中,Activity中可以加载页面 setContentView方法可以加载一个布局文件,

setContentView(R.layout.main),查找布局文件的中的视图  TextView mytextview=findViewById(R.id.textview);使用代码添加 

TextView mytextview=new TextView();
setContentView(mytextview);
mytextview.setText("Hello World");

2.布局方式

线性布局(LinearLayout):元素可以水平或者垂直对齐。可以使用android:orientation=""来设置可以为vertical或者horizental;

相对布局(RelativeLayout):根据父元素或者其他元素的布局定义每个元素的布局。android:layout_alignParentBottom="true"表示显示在父容器的底部,android:layout_above=""

表示显示在某个元素的下面

网格布局(GridLayout):是最灵活的一种布局。对于构建两个方向上都要对齐的布局网格特别有用。与LinearLayout相似元素可以水平或者垂直,默认是水平,元素一个接着一个从左到右依次排列。android:columnCount设置的是列的个数,如果显示元素固定在某列和行可以使用android:layout_Row="",android:layout_column="";如果某个元素要跨行或者列需要设置android:layout_rowSpan="",android:layout_columnSpan="",然后再用android_layout_gravity=”fill“表示充满整个整数行或列。

帧布局(FrameLayout):最简单的布局管理,简单的把元素放在边框内默认是左上角,添加多个视图新的视图会堆积在原视图上。

 

3.创建一个新的视图

修改现有的视图

Android的小工具组件中提供了许多的创建UI的必须控件,这些控件都是很通用的,修改基本的视图可以避免重新实现已有的行为,同时根据应用程序调整用户界面和功能。在一个已有的控件基础上创建一个新的视图,需要创建一个继承的原控件的新类。如果要扩展TextView的外观只需要继承textView并重写onDrow()方法。

private Paint maginPaint;
private Paint linePaint;
private void init(){
marginPaint=new Paint(Paint.ANTI_ALIAS_FLAGS);
marginPaint.setColor();
linePanit=new Paint(Paint.ANTI_ALIAS_FLAGS);
linePaint.setColor();
}
public void onDraw(Canvas canvas){
canvas.setColor();
canvas.drawLine(0,0,0,getMeasuredHeight(),linePaint);
canvas.drawLine(0,getMeasuredHeight(),getMeasuredHeight(),getMeasuredHeight(),linePaint);
canvas.drawLine(margin,0,margin,getMeasuredHeight(),marginPaint);
canvas.save();
canvas.translate(margin,0);
super.onDraw(canvas);
canvas.restore();

}

创建复合控件

复合控件是指不可分割的,自包含的视图组,其中包含了许多排列和连接在一起的子视图。创建复合控件时要选择一个合适的布局类来存放子布局,然后扩展该类。

 

创建定制的视图

首先写一个新的类继承View,重写onMeasure(),onDraw()还有事件的触发方式;

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int measuredHeight=measureHeight(heightMeasureSpec);
        int mesuredWidth=measureWidth(widthMeasureSpec);
        setMeasuredDimension(mesuredWidth,measuredHeight);
    }

    private int measureWidth(int measureSpec) {
        int specMode=MeasureSpec.getMode(measureSpec);
        int specSize=MeasureSpec.getSize(measureSpec);
        int result=50;
        
        
        return result;
    }

    private int measureHeight(int measureSpec) {
        int specMode=MeasureSpec.getMode(measureSpec);
        int specSize=MeasureSpec.getSize(measureSpec);
        int result=50;
        
        
        return result;

    }

    @Override
    protected void onDraw(Canvas canvas) {
        
        canvas.drawColor(Color.GREEN);
        
        
        }

上面是定义的一个大小为50,背景是绿色的 视图,也可以重写用户的事件交互方式。

 

4.Fragment(碎片)

将activity拆分成多个多个完全独立的组件,每个组件都有它的生命周期和UI布局,一个Activity可以有多个Fragment,每个Fragment都有自己的UI;

4.1 Fragment的生命周期

onAttach()->onCreate->onCreateView()->onActivityCreated()->onstart()->onResume()->onPase()->onStop->onDestroyView->OnDestroy->onDetach();

4.2android fragment类

Diagfragment listfragment WebViewFragment

 

posted on 2015-05-16 21:06  seize the day  阅读(108)  评论(0编辑  收藏  举报