作业——在线学习Android课程之第二周

一、主要知识点及对应课程时间

1. Android开发布局详解

  • 02:40: 介绍五大布局
  • 03:50: 线性布局——常见的布局方式之一,通过orientation属性可以设置线性布局的方向
    • 07:00: layout_weight 属性 ,控制各控件占用屏幕的比例 ,需设置layout_width=”0dp”
  • 12:40: 相对布局——常见布局方式之一,可减少层级。

    • 重要属性:
      layout_above——在指定ID的控件之上
      layout_below——在指定ID的控件之下
      layout_toLeftOf——在指定ID的控件的左边
      layout_toRightOf——在指定ID的控件的右边

      layout_alignBaseline ——和指定ID控件的baseline对齐
      layout_alignBottom ——和指定ID控件的底部边缘
      layout_alignLeft——和指定ID的左边缘对齐
      layout_alignRight——和指定ID的右边缘对齐
      layout_alignTop——和指定ID的顶部边缘对齐

      layout_alignParentBottom——如果为true,则该控件的底部与父控件的底部对齐
      layout_alignParentLeft——如果为true,该控件的左边与父控件的左边对齐
      layout_alignParentRight——如果为true,该控件的右边与父控件的右边对齐
      layout_alignParentTop——如果为true,该控件的顶部与父控件的顶部对齐

      layout_centerHorizontal——如果为true,该控件置于水平方向的中央
      layout_centerInParent——如果为true,该控件置于父控件水平方向和垂直方向的中央
      layout_centerVertical——如果为true,该控件置于垂直方向的中央

    • 21:50: layout_margin——设定外边距
    • 23:30: padding——设定内边距
  • 24:30: 帧布局FrameLayout——一层一层地层叠
  • 26:50: 绝对布局AbsoluteLayout——使用绝对坐标,已废弃
  • 27:45: 表格布局——很少用,可使用layout_span=”2”占据两列

2. Android布局技巧与优化

  • 03:40: 布局是如何进行绘制的
  • 06:35: 层次越多越费时,加载速度越慢。官方建议布局最多10层
  • 11:20: 如何减少层级?——利用相对布局替换线性布局
  • 22:00: 一些有用的属性。
    • < include layout=”@ “/>,可用来引用相同的布局
    • 24:30: 利用< merge/>,在被include引用后该项不会被引用。
    • 26:30: < ViewStub/>,需要时才加载
    • 28:10: 不要嵌套使用多个Layout_weight属性的LinearLayout
    • Android lint——删除无用的资源
    • Hierarchy Viewer——分析层级

3-5. 无比重要的ListView(上)(中)(下)

  • 1、在xml代码中加入一个ListView:

    < ListView
        android:id="@+id/list_functions"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:layout_margin="@dimen/text_distance"
        android:divider="@color/white"
        android:dividerHeight="0dp">
    < /ListView>
    
  • 2、定制ListView子控件界面,新建list_item.xml

    < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
    
        < TextView
            android:id="@+id/textview_item"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="@dimen/text_distance"
            android:paddingBottom="@dimen/text_distance"
            android:textSize="@dimen/text_size_m"/>
    < /LinearLayout>
    
  • 3、新建Adapter,并在设配器中对内容进行更改

    public class FunctionAdapter extends ArrayAdapter<Function> {
    
        private int mResourceId;
        public FunctionAdapter(Context context, int textViewResourceId, List<Function> objects){
            super(context, textViewResourceId, objects);
            mResourceId = textViewResourceId;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Function function = getItem(position);          //获得当前实例
            View view;
            ViewHolder viewHolder;
            if(convertView == null){                //优化,以免反复读取
                view = LayoutInflater.from(getContext()).inflate(mResourceId, null);
                viewHolder = new ViewHolder();
                viewHolder.functionName = (TextView)view.findViewById(R.id.textview_item);
                view.setTag(viewHolder);     //将ViewHolder存在View中
            } else {
                view = convertView;
                viewHolder = (ViewHolder)view.getTag();     //重新获取ViewHolder
            }
            viewHolder.functionName.setText(function.getName());
            return view;
        }
    
        class ViewHolder{
            TextView functionName;
        }
    }
    
  • 4、绑定适配器

    FunctionAdapter adapter = new FunctionAdapter(MainActivity.this, R.layout.list_item, mFunctionList);
    ListView listView = ((ListView)findViewById(R.id.list_functions));
    listView.setAdapter(adapter);
    
  • 5、 添加点击事件

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Function function = mFunctionList.get(position);
            Toast.makeText(MainActivity.this, "这里是“" + function.getName() + "”界面~" , Toast.LENGTH_SHORT).show();
        }
    });
    

6. GridView和ScrollView

  • 相似之处:GridView和ListView都继承于AbsListView
  • 14:30: 写GridView的xml文件
  • 15:40: 改class文件为Gridview
  • 17:00: numColumns=”2”,即显示2列(此为两者间的区别,ListView不能显示多列)
    • 适合用来图片预览、九宫格等
    • columnWidth——每列宽度
    • horizontalSpacing——横向间距
  • 23:30: ScrollView可用来不是列表的内容区滚动,其只支持垂直滚动,HorizontalScrollView支持横向滚动
    • 注意:其只能有一个子控件
  • 29:40: 快捷键如何设置
  • 31:40: SDK可在setting图标右边修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值