Android自定义Loading提示框

工作需要一个自定义的Loading提示框,那么比起从网络上找第三方库修改,从零做一个Loading更能学到更多的知识,那么我们开始吧。

制作一个旋转的Loading控件

  • 首先需要自定义View来承载动画
  • 创建LoadingView继承自View
  • 初始化画笔和图片资源
1
2
3
4
5
6
7
private void init() {   
paint = new Paint();
//画笔 抗锯齿
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
//图片资源
loadingPic = decodeResource(getResources(), R.drawable.ic_loading);
}

Android应用前后台状态判断

开发中遇到了一个需求,如果应用在非前台的状态超过一定时间,就需要用户重新去登录。如果用户不进行登录,就回到主页。这种类似的需求我在银行类App中见到过。技术点就是如何判断App当前的状态。

但是这里面状态有很多,并不只是前后台。还有App在前台,但是用户锁屏放置的情况,这种情况,也是需要算作用户未使用App的,所以需要判断的状态如下。

应用状态:

  • 从后台切换到前台
  • 从前台切换到后台
  • 用户锁屏
  • 用户解锁手机

总结出需要判断的内容之后,可以开始根据不同状态编写代码了。

关于RecyclerView嵌套ViewPager的问题

解决RecyclerView嵌套ViewPager高度不正常问题

需要解决的问题:

  • ViewPager高度为0
  • ViewPager的高度,需要统一为所有Item中,最高的那个

解决方案:

  • 自定义ViewPager类,并继承ViewPager并覆盖onMeasure方法,手动计算高度
  • 遍历子布局,取得最大高度,并设置为ViewPager高度

Android 自定义CollapsingToolbarLayout动效

面对开发中遇到的需求,怎么办呢?研究呗!

关联控件

  • CoordinatorLayout
  • AppBarLayout
  • CollapsingToolbarLayout
  • RecyclerView
  • SwipeRefreshLayout

下面放出全部布局,然后逐一讲解内容实现。

安卓面试相关知识-1

Service

  1. service和线程的区别和场景
    • 安卓线程(主线程-包括UI控件的绘制和事件响应,工作线程)
    • 一般的线程还可以执行一些耗时的异步操作,一般不要在主线程上做耗时操作,会导致ANR
    • service运行在主线程中,系统进程托管
  2. 如何管理service生命周期
    • 生命周期1:service会通过绑定服务,进行service和Activity之间的绑定
    • 生命周期2:直接去开启一个服务
    • 这两种生命周期不同。但是共同点是从OnCreate开始到OnDestory结束

Android RelativeLayout属性

RelativeLayout各个属性

  • android:layout_above="@id/xxx" --此控件底部的边缘位于设定ID控件的上方
  • android:layout_below="@id/xxx" --此控件顶部的边缘位于设定ID控件的下方
  • android:layout_toLeftOf="@id/xxx" --将控件的右边缘和给定ID控件的左边缘对齐
  • android:layout_toRightOf="@id/xxx" --将控件的左边缘和给定ID控件的右边缘对齐
  • android:layout_alignLeft="@id/xxx" --将控件的左边缘和给定ID控件的左边缘对齐
  • android:layout_alignTop="@id/xxx" --将控件的上边缘和给定ID控件的上边缘对齐
  • android:layout_alignRight="@id/xxx" --将控件的右边缘和给定ID控件的右边缘对齐
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×