[学习笔记]Android基本布局
来源:互联网 发布:战网更新网络错误 编辑:程序博客网 时间:2024/05/17 01:40
以下内容纯粹为本人学习笔记【记录】之用,所听课程(Q群群友百度网盘提供)为极客学院一位老师所讲(老师大名我尚未知晓),如有侵权请告知。在此特别感谢这位老师录制的视频资料。
1、FrameLayout
frame n.框架、边框、眼镜框、组织
v.设计、表达、陷害
a.有框架的
layout n.布局、安排、设计
FrameLayout 译为“框架布局”
其中勾选的“Launch Activity”意为 此Activity作为启动Activity。
之后,AndroidManifest.xml中MainActivity所属的activity标签里的Intent-filter标签得注释或删除。
接着,activity_frame_layout_aty.xml布局改为FrameLayout。
FrameLayout有什么优点?相对于RelativeLayout更轻量级;对于不需要调整子元素位置的情况,更方便。
实例:呈现两张图片(先呈现一张图片),
两张图片进行切换
1)准备好两张图片,放在res/drawable目录下;
2)activity_frame_layout_aty.xml添加两个ImageView用于呈现图片,且第二个ImageView设为invisible(因为开始只显示第一张图片);
3)FrameLayoutAty.java
package com.keen.learnframelayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.FrameLayout;import android.widget.ImageView;public class FrameLayoutAty extends AppCompatActivity { private FrameLayout activity_frame_layout_aty;//声明 private ImageView ivA, ivB; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_frame_layout_aty); activity_frame_layout_aty = (FrameLayout) findViewById(R.id.activity_frame_layout_aty);//获取 ivA = (ImageView) findViewById(R.id.ivA); ivB = (ImageView) findViewById(R.id.ivB); showA(); //设置事件监听器 activity_frame_layout_aty.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//呈现图片 if(ivA.getVisibility() == View.VISIBLE) { showB(); } else { showA(); } } }); } //写两个方法用于呈现图片 private void showA() { ivA.setVisibility(View.VISIBLE);//可见 ivB.setVisibility(View.INVISIBLE);//不可见 } private void showB() { ivA.setVisibility(View.INVISIBLE);//可见 ivB.setVisibility(View.VISIBLE);//不可见 }}
2、LinearLayout
线性布局,子元素(对象)一字排开(水平方向(默认)或垂直方向)。有一个很重要的[属性]“比重”–weight,意为分割父级容器的比例。
实例:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.keen.learnlinearlayout.MainActivity"> <TextView android:layout_weight="1" android:background="#f00" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_weight="1" android:background="#0f0" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_weight="1" android:background="#00f" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
某一对象不分割父级容器,把另一个对象铺满剩余容器。
第2个是根据自己的内容宽度来设定的(不参与父级容器的分割),剩下的父级容器宽度全部由第1个铺开(参与父级容器的分割)。实例
<TextView android:layout_weight="1" android:background="#f00" android:text="Hello from king" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:background="#0f0" android:text="Nice" android:layout_width="wrap_content" android:layout_height="wrap_content" />
这种方式对于开发非常有用。实例:一个浏览器页面
3、RelativeLayout
相对布局,是相对于父级容器(如边界、中心点)进行定位,奇特的地方是还可以相对于其他控件进行定位。
package com.keen.relativelayoutaty;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.RelativeLayout;import android.widget.TextView;public class RelativeLayoutAty extends AppCompatActivity { private RelativeLayout root; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); root = new RelativeLayout(this); setContentView(root); tv = new TextView(this); tv.setText("陈大哥"); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); //调整位置 lp.leftMargin = 200;//左边距 lp.topMargin = 500;//上边距 root.addView(tv, lp); }}
4、用代码控制子对象的添加和删除
动态添加、删除布局元素。完全不依赖布局文件
package com.keen.learnlinearlayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private LinearLayout root; private Button btnClickme;//声明 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.browser);//相当于绑定此布局文件 root = new LinearLayout(this);//创建一个布局 root.setOrientation(LinearLayout.VERTICAL);//设置布局方向 setContentView(root); for (int i =0; i<5; i++) { btnClickme = new Button(this);//创建按钮// btnClickme.setText("Click me"); btnClickme.setText("Remove me"); btnClickme.setOnClickListener(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.weight = 1;//设置比重 root.addView(btnClickme, lp);// root.addView(btnClickme, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); }// btnClickme = new Button(this);//创建按钮// btnClickme.setText("Click me");// root.addView(btnClickme);//默认// root.addView(btnClickme, 500, 300);//直接指定宽度、高度// root.addView(btnClickme, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); //根据布局参数添加子对象// LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);// root.addView(btnClickme, lp); } @Override public void onClick(View v) { root.removeView(v); }}
- [学习笔记]Android基本布局
- Android基本布局学习
- Android学习笔记6——基本布局
- Android学习笔记——五大基本布局+AbsoluteLayout
- Android布局学习笔记
- Android 布局学习笔记
- Android学习笔记--布局
- android学习笔记-布局
- Android 学习笔记-布局
- 前端学习笔记-9月--基本布局
- Android学习笔记之布局
- Android学习笔记 - 布局篇
- Android学习笔记 - 布局篇
- Android学习笔记TableLayout布局
- android学习笔记1-布局
- Android UI学习笔记------布局
- android学习笔记(三)--布局
- Android学习笔记之布局
- Linux进程环境之进程虚拟空间及存储
- 批量恢复 Mac OS X 废纸篓里的文件
- 半透明AlphaBlend
- 模版引擎详解
- 541. Reverse String II
- [学习笔记]Android基本布局
- 搜索文件
- SQL数据库入门基础
- String 创建 原理
- Error:A potentially dangerous Request.Form value was detected from the (WebEditor1="...bsp; <B>
- (69)环境音Actor用户指南
- 我与python约个会:20. 企业级开发基础1:自定义模块
- Python列表基本增减操作
- 层次聚类实例以及Java实现