前言
在此之前,我一度的认为安卓比iOS麻烦太多了,单是眼花缭乱的设备尺寸就足以让人脑残。但当我开始接触安卓开发之后,从iOS角度去理解Android,才发现,我想的终归是臆测,Android的相对布局,比iOS好用且可以更好的适配屏幕。
下面是一个简单的Demo,进行对比说明。实现的页面比较简单,一个可滚动的视图,如: Snip20180103_1.png// Activity文件
class ScrollingActivity : AppCompatActivity() {
// onCreat方法执行的时机和iOS中的viewDidLoad类似
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_scrolling)
}
}
布局文件
安卓中控件的创建及布局都在Layout.xml中完成,与iOS中的xib一致,xib也是由xml编写的(切在界面化约束的使用上两者近似),在上述功能中,只需要创建两个xml文件即可。在主xml中,代码如下
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".ScrollingActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppbarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar" >
<android.support.v7.widget.Toolbar
android:id="@+id/navibar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"
/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_scrolling" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
app:layout_anchor="@id/app_bar"
app:layout_anchorGravity="bottom|end"
app:srcCompat="@android:drawable/ic_dialog_email"
/>
</android.support.design.widget.CoordinatorLayout>
这里用到的CoordinatorLayout
,需要在gradle中引入库implementation 'com.android.support:design:26.1.0'
后才能使用。
在上述布局中采用了CoordinatorLayout
+AppBarLayout
+CollapsingToolbarLayout
方式,其实我是完全按照Android Studio
给出的Demo抄写了一遍,但是感悟还是很深的,在主xml中有引入了content_scrolling
xml文件。
// content_scrolling文件代码如下
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".ScrollingActivity"
tools:showIn="@layout/activity_scrolling">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/large_text"
/>
</android.support.v4.widget.NestedScrollView>
理解起来就是,创建一个scrollView控件,设置宽高都等于父控件,设置布局行为等于appbar_scrolling_view_behavior
,然后添加在主xml中,也就是activiry_scrolling,创建一个TextView并指定宽高及需要显示的内容。
ok,布局结束。
是的,在安卓中的布局就这么多内容。
让我觉的安卓的布局代码真的很清爽。至于布局的layout属性,我也在慢慢学习中,后面慢慢深入学习再做笔记。
网友评论