android布局

Android自定义控件View的探讨

前提是你 提交于 2019-12-05 07:15:06
本文转载自:http://www.apkbus.com/forum.php?mod=viewthread&tid=242501&extra=page%3D1 做过了一段时间的安卓开发都会接触到自定义控件,那么对于自定义控件大家都有什么样的看法呢?自定义控件他的优势是明显的,设计他的思想又有哪些呢?会用到什么模式呢?希望大家看了这个文章之后,可以发表自己对于自定义控件的看法和思想,这个帖就是为了跟大家交流而发。下面是我自己的一些看法,大侠们请指导!!! 自定义View: 在这里我们先来了解自定义控件view所需要的一些基础知识,以及常见做法。 自定义View类的构造方法 创建自定义控件的3种主要实现方式: 1)继承已有的控件来实现自定义控件 主要是当要实现的控件和已有的控件在很多方面比较类似, 通过对已有控件的扩展来满足要求。 2)通过继承一个布局文件实现自定义控件 一般来说做组合控件时可以通过这个方式来实现。 注意此时不用onDraw方法,在构造函数中通过inflater加载自定义控件的布局文件,再addView(view),自定义控件的图形界面就加载进来了。 例如: 假设我已经有了一个布局的XML文件,里面有一个textview和一个imageview,那么在自定义view的构造方法里这样写就可以使用刚刚的布局XML啦。 public MyView(Context context

ANDROID布局实现圆角边框

故事扮演 提交于 2019-12-05 01:19:27
首先,在res下面新建一个文件夹drawable,在drawable下面新建三个xml文件:shape_corner_down.xml、shape_corner_up.xml和shape_corner.xml,分别是下面两个角是圆角边框,上面两个角是圆角边框,四个角全部是圆角边框。 shape_corner_down.xml: 1 2 3 4 5 6 7 <?xml version= "1.0" encoding= "utf-8" ?> <shape xmlns:android= " http://schemas.android.com/apk/res/android " > <solid android:color= "#0099CC" /> <corners android:bottomRightRadius= "20dp" android:bottomLeftRadius= "20dp" /> <stroke android:width= "1dp" android:color= "#000000" /> </shape> shape_corner_up.xml: 1 2 3 4 5 6 7 <?xml version= "1.0" encoding= "utf-8" ?> <shape xmlns:android= " http://schemas.android.com

ViewSwitcher的功能与用法

孤街醉人 提交于 2019-12-04 15:16:31
ViewSwitcher代表了视图切换组件,它本身继承了FramLayout,因此可以将多个View层叠在一起,每次只显示一个组件。当程序控制从一个View切换到另一个View时,ViewSwitcher支持指定动画效果。 为了给ViewSwitcher添加多个组件,一般通过调用ViewSwitcher的setFactory(ViewSwitcher.ViewFactory)方法为之设置ViewFactory,并由该ViewFactory为之创建View即可。 实例:仿Android系统的Launcher界面 Android早期版本的Launcher界面是上下滚动的,新版Android的Launcher界面已经实现了分屏、左右滚动,本例就是通过ViewSwitcher来实现Android的分屏、左右滚动效果。 为了实现该效果,程序主界面考虑使用ViewSwitcher来组合多个GridView,每个GridView代表一个屏幕应用程序,GridView中每个单元格显示一个应用程序的图标和程序名。 布局文件如下 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res

安卓各布局优缺点

强颜欢笑 提交于 2019-12-04 15:07:05
1.ConstraintLayout 约束布局 app:layout_constraintTop_toBottomOf :"@id/控件id" 使此控件在 控件id对应控件 之下 权重:app:layout_constraintHorizontal_weight = "2" 2.RelativeLayout 相对布局 在id控件之上 android:layout_above ="id" 在btn1之上,并在其之左 android:layout_above= "@id/btn1" android:layout_toLeftOf= "@id/btn1" 在btn2之上,且在btn2和btn3之间 android:layout_above="@id/btn2" android:layout_toLeftOf="@id/btn3" android:layout_toRightOf="@id/btn2" 3.TableLayout 表格布局 计算器键盘 4.FrameLayout 框架布局 FrameLayout 是最简单的布局了。所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。 在 FrameLayout 布局里,定义任何空间的位置相关的属性都毫无意义 android:layout_width="fill_parent"属性造成的android

浅谈android4.0开发之GridLayout布局

…衆ロ難τιáo~ 提交于 2019-12-04 06:49:30
本文重点讲述了自android4.0版本后新增的GridLayout网格布局的一些基本内容,并在此基础上实现了一个简单的计算器布局框架。通过本文,您可以了解到一些android UI开发的新特性,并能够实现相关应用。 在android4.0版本之前,如果想要达到网格布局的效果,首先可以考虑使用最常见的LinearLayout布局,但是这样的排布会产生如下几点问题: 1、不能同时在X,Y轴方向上进行控件的对齐。 2、当多层布局嵌套时会有性能问题。 3、不能稳定地支持一些支持自由编辑布局的工具。 其次考虑使用表格布局TabelLayout,这种方式会把包含的元素以行和列的形式进行排列,每行为一个TableRow对象,也可以是一个View对象,而在TableRow中还可以继续添加其他的控件,每添加一个子控件就成为一列。但是使用这种布局可能会出现不能将控件占据多个行或列的问题,而且渲染速度也不能得到很好的保证。 android4.0以上版本出现的GridLayout布局解决了以上问题。GridLayout布局使用虚细线将布局划分为行、列和单元格,也支持一个控件在行、列上都有交错排列。而GridLayout使用的其实是跟LinearLayout类似的API,只不过是修改了一下相关的标签而已,所以对于开发者来说,掌握GridLayout还是很容易的事情

Android六大布局详解——RelativeLayout(相对布局)

两盒软妹~` 提交于 2019-12-04 01:12:06
RelativeLayout 接着上一篇,本篇我将介绍RelativeLayout(相对布局)的一些知识点。 RelativeLayout 这是一个非常常用的布局,相比于上节所学到的LinearLayout布局,它更加的随意,可以通过相对定位的方式让控件出现在布局的任何位置。新建UILayoutTestTwo工程,修改activity_main.xml中的代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="button 1"/> <Button android:id

Android中Preference的使用以及监听事件分析

扶醉桌前 提交于 2019-12-03 23:43:38
在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局。当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准)。归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个PreferenPreferencece存储在相对应下的SharedPreference文件夹下)。 下面,我们对比Preference和View下得各个子控件,对他们的家庭元素在宏观上有个更好的把握性。 单一控件: Preference 控件家庭 View控件家庭 控件含义 Preference TextView 文本框 CheckPreference CheckBox 单选框 EditTextPreference EditText 输入文本框 ListPreference ListView 列表框 RingtonePreference —— 铃声 其实在Android源码系统中还有很多的”未完工”的Preference, 没有为它们提供PI接口,例如SeekBarPreference,

Android5.0+(Percent 百分比布局)

走远了吗. 提交于 2019-12-03 15:22:26
相信大家都已经对Android API所提供的布局方式非常熟悉了。也许在接触Android的时候都有过这样的想法,如果可以按照百分比的方式进行界面布局,这样适配各种屏幕就简单多了吧!谷歌正式提供百分比布局支持库(android-support-percent-lib)。当然了android-percent-support这个库,基本可以解决上述问题,下面我们将对这个支持库进行介绍 这个库提供了: 两种布局供大家使用: PercentRelativeLayout、PercentFrameLayout,通过名字就可以看出,这是继承自FrameLayout和RelativeLayout两个容器类; 支持的属性有: layout_widthPercent、layout_heightPercent、 layout_marginPercent、layout_marginLeftPercent、 layout_marginTopPercent、layout_marginRightPercent、 layout_marginBottomPercent、layout_marginStartPercent、layout_marginEndPercent。 可以看到支持宽高,以及margin。 也就是说,大家只要在开发过程中使用PercentRelativeLayout

Android 表格布局 TableLayout

大城市里の小女人 提交于 2019-12-03 09:53:53
属性介绍 stretchColumns: 列被拉伸 shrinkColumns: 列被收缩 collapseColumns: 列被隐藏 举例测试 <TableLayout android:id="@+id/table1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0" > <TableRow android:id="@+id/row1" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#fd8d8d" android:text="測試表格布局" android:textColor="#000000" /> </TableRow> </TableLayout> <TableLayout android:id="@+id/table2" android:layout_width=

Android 相对布局 RelativeLayout

左心房为你撑大大i 提交于 2019-12-03 05:05:00
<!-- 在main元素的上方 --> android:layout_above="@+id/main" <!-- 在main元素的下方 --> android:layout_below="@+id/main" <!-- 在main元素的左边 --> android:layout_toLeftOf="@+id/main" <!-- 在main元素的右边 --> android:layout_toRightOf="@+id/main" <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android