近期,根据部门要求,对Android进行研究,由于商业级开发,讲究方便快速开发,并且有很高的可维护性和可扩展性,所以我想着需要将代码进行封装(例如:列表展示功能,仅仅给列定义和数据来源,其他都自动生成),但是安卓提供了界面编辑器,他的界面都是通过XML来描述的,虽然这种方式虽然挺好,但是却不好封装,所以我开始研究如何使用纯代码方式完成页面
注意:这里绝对不是说界面编辑器不好,我觉得通过研究纯代码化界面编程可以使得编码更加快速,更加好封装


对于我目前来说,主要使用三种布局LinearLayout,TableLayout,FrameLayout,下面是一些使用示例,供大家参考
注意:下面出现的this就是activity,实质上就是context


1.LinearLayout:最常用的布局,内容按序摆放

// 定义总布局,流式布局LinearLayout managerLinearLayout = new LinearLayout(this);// 设置布局的一些属性LinearLayout.LayoutParams managerLinearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);// 设置居中managerLinearLayoutParams.gravity = Gravity.CENTER;// 设置和外部的距离managerLinearLayoutParams.setMargins(10, 10, 10, 10);managerLinearLayout.setLayoutParams(managerLinearLayoutParams);// 设置布局样式为纵列managerLinearLayout.setOrientation(LinearLayout.VERTICAL);// 设置内容填充managerLinearLayout.setPadding(0, 10, 0, 0);// 设置背景图片,图片放置在assets中managerLinearLayout.setBackgroundDrawable(Drawable.createFromStream(getAssets().open("images/background/background_red.jpg"), ""));

2.FrameLayout:用于存在内容重叠的情况

// 定义用户头像布局,这里存在一张背景,一张用户头像图片叠放在一起FrameLayout userHeadLayout = new FrameLayout(this);userHeadLayout.setPadding(30, 40, 10, 0);// 定义用户头像背景图片ImageView userHeadBgImage = new KmfImageView(this, "images/user_head_bg.png");KmfImageView userHeadDefaultImage = new KmfImageView(this, "images/user_head_default.png");userHeadDefaultImage.setDefaultSize();userHeadDefaultImage.setPadding(5, 5, 0, 0);userHeadLayout.addView(userHeadBgImage);userHeadLayout.addView(userHeadDefaultImage);

3.TableLayout:用于表格存放控件的情况

TableLayout tableLayout = new TableLayout(this);//创建行TableRow row1 = new TableRow(this);TextView view1 = new TextView(this);view1.setText("测试文本1:");row1.addView(view1);TableRow row2 = new TableRow(this);TextView view2 = new TextView(this);view1.setText("测试文本2:");row2.addView(view2);tableLayout.addView(row1);tableLayout.addView(row2);

关于布局嵌套
由于这些界面都继承自View,所以可以直接使用他们的addView方法进行嵌套,例如上面代码中的三个布局,可以做以下的操作

managerLinearLayout.addView(userHeadLayout);//将布局直接添加到TableLayout中,而不是新建TableRow添加tableLayout.addView(managerLinearLayout);

关于布局暂时就写到这里吧,至于另外几种布局,我暂时还没怎么研究,等以后研究更深了,再补上来

更多相关文章

  1. Android(安卓)ActionBar与Menu - 1 - api demos 学习
  2. [送给不懂android的开发者]react-native如何替换android图标资源
  3. Android设置字体大小, 该用sp还是dp?
  4. Android用户界面开发:事件处理
  5. android 随着认识的去除率EditText(它配备了防抖效果)
  6. Android(安卓)键盘开发心得
  7. Android中使用DrawerLayout的注意点
  8. Android手机上网、彩信APN设置
  9. Android(安卓)UI 之CheckBox的妙用

随机推荐

  1. Android(安卓)Studio 初体验
  2. 为Activity生成桌面快捷方式
  3. 2011.06.08——— android 1.6 launcher
  4. Android(安卓)关于 OnScrollListener 事
  5. porting iperf to Android(安卓)platform
  6. RecyclerView实现横向滚动效果
  7. android 发送短信的两种方式
  8. Android应用开发——界面开发之常用组件
  9. 安卓面试中遇到的问题2017.2
  10. 自定义View android 像支付宝支付界面的p