【安卓开发——界面常用知识点】

1.安卓中是不允许在子线程中进行UI操作的,可通过runOnUiThread()方法将线程切换到主线程,然后再更新UI元素,这样不需要通过handler事件传递到主线程更新UI。

new Thread(new Runnable(){   //如果是非耗时操作,这里也可以是函数方法
    //这里进行其它耗时操作
    runOnUiThread(new Runnable(){
        @Override
        public void run(){
            //这里根据上面的执行结果进行UI操作
        }
    });
}).start();

2.向上滚动隐藏标题栏的效果,可通过AppBarLayout、RecyclerView、Toolbar来实现。形如下面的代码,app:layou_scrollFlags中scroll表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏,enterAlways表示会跟着一起向下滚动并重新显示,snap表示当Toolbar还没有完全隐藏或显示时,会根据当前滚动距离自动选择是隐藏还是显示。AppBarLayout能够让Toolbar不至于被RecyclerView遮挡,它实际上是一个垂直方向的LinearLayout

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.Toolbar
        android:id=“@+id/toolbar”
        android:layout_width="match_parent"
        android:layout_height="?/actionBarSize"
        app:layou_scrollFlags=“scroll|enterAlways|snap”/>
    <android.support.v7.widget.RecyclerView
        android:id=“@+id/recycler_view”
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <android.support.design.widget.FloatingActionButton
        android:id=“@+id/fab”
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="16dp"
        android:src="@drawable/ic_done"/>
</android.support.design.widget.AppBarLayout>

3.下拉刷新可通过SwipeRefreshLayout包裹RecyclerView控件来实现,然后用代码绑定刷新事件。

swipeRefreshView.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark);

// 下拉时触发SwipeRefreshLayout的下拉动画,动画完毕之后就会回调这个方法
swipeRefreshView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        // 这里是主线程
        // 一些比较耗时的操作,比如联网获取数据,需要放到子线程去执行,处理了之后通过                                
        // runOnUiThread更新adpter之类,然后刷新界面
        // TODO 获取数据
    }
});

4.想让背景图能够和系统状态栏融合,需借助android:fitsSystemWindows属性来实现,fitsSystemWindows只作用在Android4.4及以上的系统,4.4以下无透明效果,4.4~5.0是全透明,5.0以上是半透明。这个属性可以给任何view设置,只要设置了这个属性此view的其他所有padding属性失效,同时该属性的生效条件是,只有在设置了状态栏(StatusBar/Toolbar)或者导航栏(NavigationBar)为透明时此属性才会生效。在默认情况下,多个view设置该属性时,只有最外层的view才会起作用。指定成透明色的方法很简单,在主题中将android:statusBarColor属性的值,指定成@android:color/transparent就可以了。兼容性写法:

右击res目录,->new->Directory,创建一个values-v21目录,然后右击values-v21目录->New ->Values resource file,创建一个styles.xml文件。

<resources>
    <style name="TransparentTheme" parent="AppTheme">
        <item name="android:statusBarColor">@color/transparent</item>
    </style>
</resources>

该主题中将状态栏的颜色设置成了透明,并继承与AppTheme,并且由于values-21目录,只有安卓5.0以上才会去读取,要使安卓5.0以上兼容,需在原有的styles.xml文件中添加一行代码

<style name="TransparentTheme" parent="AppTheme">
</style>

这样对于安卓5.0以上的系统,能在这里读取该属性,将什么都不做。最后,还需要让活动使用这个主题才行,修改AndroidManifest.xml中的代码,在活动申明的地方添加一行代码

android:theme="@style/TransparentTheme"

当然,这里也可以通过代码实现,不过更建议用资源文件的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值