`

Android UI开发(二)布局管理器之线性布局的3种实现方式

 
阅读更多

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39643669


LinearLayout是Android控件中的线性布局控件,它包含的子控件将以横向(HORIZONTAL)或竖向(VERTICAL)的方式排列,按照相对位置来排列所有的子控件及引用的布局容器。超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个控件或者是引用的布局容器。



一、LinearLayout线性布局的相关属性说明:

android:orientation 布局方向:"vertical"垂直线性布局,"horizontal"水平线性布局
android:id 为控件指定相应的ID
android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符
android:grivity 指定控件的基本位置,比如说居中,居右等位置
android:textSize 指定控件当中字体的大小
android:background 指定该控件所使用的背景色,RGB命名法
android:width 指定控件的宽度
android:height 指定控件的高度
android:padding 指定控件的内边距,也就是说控件当中的内容
android:singleLine 如果设置为真的话,则将控件的内容在同一行当中进行显示
android:layout_weight 默认值为0,layout_weight属性可以控制各个控件在布局中的相对大小,线性布局会根据该控件layout_weight值与其· 所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。



二、LinearLayout项目演示3种实现方式示例

2.1 第一种实现方式:xml配置实现LinearLayout

<activity_main.xml>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello!"
        android:textSize="20sp" />

</LinearLayout>


2.2 第二种实现方式:代码实现LinearLayout

<MainActivity.java>

</pre><pre name="code" class="java">/**
 * @author liu
 * @description 代码动态创建线性布局管理器
 */
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// setContentView(R.layout.main);
		LinearLayout layout = new LinearLayout(this);// 创建现行布局管理器
		LinearLayout.LayoutParams params = new LayoutParams(
				ViewGroup.LayoutParams.MATCH_PARENT,
				ViewGroup.LayoutParams.MATCH_PARENT);// 设置线性布局参数
		layout.setOrientation(LinearLayout.VERTICAL);
		TextView txt = new TextView(this);
		LinearLayout.LayoutParams txtParams = new LayoutParams(
				ViewGroup.LayoutParams.MATCH_PARENT,
				ViewGroup.LayoutParams.WRAP_CONTENT);// 设置组件参数
		txt.setLayoutParams(txtParams);
		txt.setText("Hello!");
		txt.setTextSize(20);
		layout.addView(txt, txtParams);
		addContentView(layout, params);

	}
}

2.3 第三种实现方式:自定义实现LinearLayout(继承LinearLayout)

2.3.1、实现效果图(图片旋转)



2.3.2、项目结构图



2.3.3、详细的编码实现

1)继承LinearLayout的子类文件MyLinearLayout.java:

public class MyLinearLayout extends LinearLayout {
	/**
	 * 在xml布局文件中声名的view,创建时由系统自动调用。
	 */
	public MyLinearLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView();
	}

	/**
	 * 初始化LinearLayout视图
	 */
	private void initView() {
		// 设置LinearLayout的布局方向
		setOrientation(LinearLayout.VERTICAL);
		// 设置布局参数
		LinearLayout.LayoutParams params = new LayoutParams(
				LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
		TextView tv = new TextView(getContext());
		tv.setText(R.string.hello_world);
		// 在MyLinearLayout里面添加TextView
		addView(tv, params);
		for (int i = 0; i < 10; i++) {
			ImageView iv = new ImageView(getContext());
			iv.setImageResource(R.drawable.ic_launcher);
			Animation animation1 = AnimationUtils.loadAnimation(getContext(),
					R.anim.rotate);
			iv.setAnimation(animation1);
			// 在MyLinearLayout里面添加10个带动画的ImageView
			addView(iv, params);
		}
	}

	/**
	 * 对子view进行布局,确定子view的位置
	 */
	@Override
	protected void onLayout(boolean changed, int l, int t, int r, int b) {
		super.onLayout(changed, l, t, r, b);
	}

	/**
	 * 测量尺寸时的回调方法
	 */
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
	}

}

2)主布局资源文件,activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.liu.mylinearlayout01.MyLinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

3)动画文件rotate.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillBefore="false" >

    <!--
    	旋转效果,pivotX,pivotY指旋转坐标;
    	fillAfter="true" fillBefore="false" 表示动画停止在最后的位置;
   		fromDegrees toDegrees从0°到350°
		startOffset:延时1s执行
		duration:动画执行时间3s
		repeatCount: 重复次数3+1
    -->
    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:pivotX="50%p"
        android:pivotY="20%p"
        android:repeatCount="3"
        android:startOffset="1000"
        android:toDegrees="350" />

</set>

4)、主Activity程序入口类,MainActivity.java:无需修改(按Eclipse自动生成的代码即可)

以上就是笔者知道的LinearLayout的三种实现基本方式。


源码下载地址






分享到:
评论

相关推荐

    Android UI设计心得

    包括线性布局(LinearLayout)、相对布局(RelativeLayout)、表格布局(TableLayout)、框架布局(FrameLayout)、绝对布局(AbsoluteLayout)。其中AbsoluteLayout在Android SDK2.3.3之后已经明确不再支持。 资源带...

    Android开发——布局方式Demo源码

    Android布局详解实例,包含:线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout)四大布局方式的demo

    022 _UI_布局之线性布局-动态生成与LayoutInflater

    022 _UI_布局之线性布局-动态生成与LayoutInflater 视频教材,讲解的比较详细,有兴趣的可以学习下哦

    Android中UI布局Layout

    线性布局LinearLayout 框架布局FrameLayOut RelativeLayout相对布局 绝对布局AbsoluteLayout TableLayout表格布局

    Android---UI篇

    •Android---UI篇---LinearLayout(线性布局) • •Android---UI篇---WebView(网络视图) • •Andorid---UI篇---两种进度条(ProgressBar) • •Android---UI篇---Dialog(对话框) • •Android---UI篇---...

    实验1--Android基础入门与Android-UI开发应用(1).doc

    课本第2章讲解了Android UI开发,其中包括了相对布局、线性布局、样式和主题、国际化等知识点。在实 际开发中,这些知识点的使用频率比较高,这里将通过一个综合型案例——手机信 息页来演示这些知识点的综合应用。...

    《Android应用开发揭秘》附带光盘代码.

     15.6 AndroidUI优化  15.7 其他优化  15.7.1 zipalign  15.7.2 图片优化  15.8 小结  第五部分 扩展篇  第16章 Android NDK开发  16.1 AndroidNDK简介  16.2 安装和配置NDK开发环境  16.2.1 系统和软件...

    Android UI组件LinearLayout线性布局详解

    主要为大家详细介绍了AndroidUI组件LinearLayout线性布局,具有一定的实用性,感兴趣的小伙伴们可以参考一下

    《Android应用开发揭秘》源码

     15.6 AndroidUI优化  15.7 其他优化  15.7.1 zipalign  15.7.2 图片优化  15.8 小结  第五部分 扩展篇  第16章 Android NDK开发  16.1 AndroidNDK简介  16.2 安装和配置NDK开发环境  16.2.1 系统和软件...

    Android应用开发揭秘pdf高清版

    15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇 第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件需求 16.2.2 NDK开发...

    【视频9】UI线性布局嵌套

    1.本套课程包括Android的核心UI界面设计和后端代码实现,将内容显示在UI界面中。 2.重要涉及UI界面多种点击事件,数据获取,列表,网络接口请求数据,多线程,Handler数据传递,Json数据解析及LitePal数据库使用。 3...

    【视频8】UI线性布局

    1.本套课程包括Android的核心UI界面设计和后端代码实现,将内容显示在UI界面中。 2.重要涉及UI界面多种点击事件,数据获取,列表,网络接口请求数据,多线程,Handler数据传递,Json数据解析及LitePal数据库使用。 3...

    AndroidUI基本测验:线性布局

    用这些包括线性布局控件的渐进测验来测试你的新知识,并且巩固你Java编程和Android用户界面设计与开发的知识。为了准备这个测验,你希望以一个基本的Android程序开始。你只需要在Eclipse中创建一个Android程序然后...

    Android开发与应用——张荣,原书配套课件

    5.1.1 线性布局 5.1.2 表格布局 5.1.3 帧布局 5.1.4 相对布局 5.1.5 绝对布局 5.1.6 复用XML布局文件 5.2 控制视图界面的其他方法 5.2.1 代码控制视图界面 5.2.2 代码和XML联合控制视图界面 5.3 ...

    Android移动应用开发实验指导书.docx

    (2)Android的布局方式有LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、TableLayout(表格布局)。 (3)Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)...

Global site tag (gtag.js) - Google Analytics