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) 编辑 收藏 举报