• Android里的前端界面


    如果说活动是每个界面的后台逻辑,Android里的前端界面就是res里的layout的XML文件。

    一、控件

        1、每个控件都有id,长,宽,即在XML代码中都有android:id属性和android:layout_width属性和

             android:layout_heigh属性

             定义id:android:id="@+id/id名"

             引用id:android:od="@id/id名"

             android:layout_width和android:layout_heigh有俩种可选值:match_parent(与父布局大小一致)和

                            wrap_content(大小刚好包住内容)

        2、控件代码都是<控件名 属性1、属性2、....  />,属性值都用""包含

        3、所有控件都有android:visibility属性

                    android:visibility:设置控件显示状态。可选值:visible(可见),invisible(隐藏仍占用屏幕),gone(消失且不占屏幕)

              后台逻辑操控属性方法:

                    setVisibility():可传入View.VISIBLE、View.INVISIBLE,View.GONE

        4、  android:gravity:指定文字对齐方式

                android:layout_gravity:指定控件在布局对齐方式

                android:layout_weight:先按控件尺寸分配屏幕,再按layout_weight属性值比例进行分配

                                                   如:布局有俩个按钮,一个按钮layout_weight属性为1,另一按钮未设置该属性,则

                                                          未设置按钮分配完基本尺寸后,剩余空间都为另一个按钮所占,此时比例为1/1.

                                                          若设置了为1,则俩按钮平分布局空间

    Button:按钮控件

            XML属性可自行查询文档,这里主要讲后台逻辑部分

            当获取到布局文件中的元素(通过Button,findViewById(R.id.id名))后,按钮的触发事件添加方式有俩钟。

            第一种:单个按钮时使用,直接调用。如:

                        button.setOnClickListener(new OnClickListener(){

                            public void onClick(View v){

                                //添加触发事件逻辑

                            }

                        });

            第二种:多个按钮时使用

                One:使当前类继承OnClickListener接口(implements OnClickListener)

                Two:若有多个按钮,都设置当前类为监听类。button.setOnClickListener(this);

                Three:在当前类重写onClick(View v)。

                public void onClick(View v){    //View指的是点击按钮,根据不同按钮id不同设置不同触发代码

                    switch(v.getId()) {
                         case R.id.button1:Toast.makeText(this, "按钮1", Toast.LENGTH_SHORT).show();break;
                         case R.id.button2:Toast.makeText(this, "按钮2", Toast.LENGTH_SHORT).show();break;

                         default:break;

                    }

                }

    TextView:文本控件,用来显示文本

            有以下属性:

                android:text:显示文本内容

                android:gravity:指定文字对齐方式(top,bttom,left,right,center),可用"|"来指定多个值,如:"center_vertical | 

                                          center_horizontal"来表示文字在水平和垂直方向都居中

                android:textSize:指定文字大小,单位sp

                android:textColor:指定文字颜色,可用16进制数或英文

    EditText:文本输入(编辑)框

             有以下属性:

            android:hint:设置未输入时显示内容,输入时小时

            android:maxLines:设置输入时最大行数,避免内容过多导致控件变形

            android:inputType:可设置为textPassword将文本框变为密码框

            后台逻辑:

            getText().toString():获得String形式文本

            如:EditText editText=(EditText)findViewById(R.id.id名);

                   editText.getText().toString();

    ImageView:显示图片控件

            属性:

            android:src:设置显示图片,如:android:src="@drawable/图片名"

            scaleType:让图片铺满ImageView

            后台逻辑:

            setImageResource(R.drawable.图片名):设置显示图片

    ProgressBar:加载数据进度条

            属性:

            (style="?android:attr/progressBarStyleHorizontal"):指定成水平进度条

              android:max:指定进度条最大值

            后台:

            progressBar(进度条类)和progress(进度类)配合使用,如:

            progress=progressBar.getProgress();

            progress+=10;

            progressBar.setProgress(progress);

    AlertDialog.Builder:在当前界面弹出警告对话框

            后台:

            setTitle(String):设置警告对话框标题

            setMessage(String):设置警告对话框信息(内容)

            setCancelable(true/false):设置警告对话框是否可取消

            //设置确定键

            setPositiveButton(String,new DialogInterface.OnClickListen(){

                public void onClick(DialogInterface,int which){

                }

            });

            

            //设置取消键

            setNegativeButton(String,new DialogInterface.OnClickListen(){

                public void onClick(DialogInterface,int which){

                }

            });

            show():显示警告对话框

    ProgressDialog:进度条对话框    

            后台:   

             setTitle(String):设置进度条对话框标题

            setMessage(String):设置进度条对话框信息(内容)

            setCancelable(true/false):设置进度条对话框是否可取消

            show():显示进度条对话框

            dimiss():关闭对话框

    (重点)ListView:列表控件,不同于上面其它控件,格式为:<ListView></ListView>

         Part One后台:用到ListView类和适配器类(这里选用数组适配器类ArrayAdapter<列表子项类型>)

            ListView后台代码:

                setAdapter():传入设置的适配器

                

                setOnItemClickListener(new OnItemClickListener(){

                    public void onItemClick(AdapterView<?> parent,int position, longid){

                            //点击子项触发事件代码....此处position为子项索引值,可用ArrayAdapter类型的适配器类的get(position)方法

                            //从子项数组取出子项类

                    }

                });

            ArrayAdapter<列表子项类型>后台代码:

                ArrayAdapter<列表子项类型>(当前活动.this,列表子项布局id,列表子项数组):构造一个适配器,若此时id为

                                                                android.R.layout.simple_list_item_1,此时子项布局为内置布局文件,只有一个

                                                                TextView,子项数组应为String类型与之对应

                

         Part Two自定义子项步骤:

                1、自定义子项布局文件,在构建适配器时传入布局id

                2、自定义子项类(包含对应的类型变量,如 TextView对应定义String变量,图片对应int变量),同时重写子项类构造

                      函数和对应变量的返回函数

                3、自定义适配器类(包含子项布局ID变量resourceId,因为后面要用)继承于ArrayAdapter<自定义子项类>

                     重写构造方法:super(当前活动.this,列表子项布局id,列表子项数组)

                                             resourceId=列表子项布局id;

                     重写public View getView(int position,View cachView,ViewGroup parent):当列表滚动至屏幕包含子项调用的方法

                                            Fruit fruit=getItem(position);        //获得滚动进屏幕的子项类

                                            View view;

                                            if(cachView==null){    //缓存视图为空

                                                view=LayoutInflater.from(getContext()).inflate(resourceId,null);  //获得子项布局View

                                            } else{

                                                view=cachView;

                                            } 

                                            //接下来就是给布局文件里的具体控件加载资源

                                            //如:TextView textView=findViewById(R.id.控件id名);

                                            //        textView.setText(fruit.getText());....        

                                            return view;    //最后返回子项布局view

                             }

            

    二、布局

        LinearLayout:线性布局

        RelativeLayout:相对布局(推荐使用,可随意放置控件布置)

        TableLayout:表格布局

        FrameLayout:少用

    三、XML引入自定义布局

        <#include layout="@layout/布局文件名">

  • 相关阅读:
    逻辑分析推理(海盗分金问题)
    使用数组构建 ExtJs TreeStore 结构
    逻辑分析推理(找出轻球问题)
    逻辑分析推理(骗子购物问题)
    逻辑分析推理(戴帽子问题)博弈
    简单的排序算法(冒泡、选择、插入)
    逻辑分析推理(五小姐问题)
    逻辑分析推理(倒水问题)
    关于排序(快速排序)
    游戏开发基础(2)
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236339.html
Copyright © 2020-2023  润新知