移动开发
HL是限量版
我不曾向往一张未经沧桑的面庞,但会仰慕一颗赤诚热烈的少年心
展开
-
【详细】手把手教你实现JavaScript轮播图功能
轮播图见下图是移动端,网站上一种非常常见的展示效果,我们在各大app,网站都经常可以看到这种效果。用户可以用手来回选择展示的图片,无点击事件时,控件会依次循环展示图片。那么本文今天就探究一下如何实现这类效果。...原创 2021-01-28 14:08:23 · 7685 阅读 · 26 评论 -
【详细】豆瓣小程序--从0到1实现首页布局
首页是app,小程序中非常常见的一个需求,作为常见的需求,如何高效地完成该需求的实现,就异常关键。那么我们如何从0到1实现自己的首页,请看本文。实际效果实现了瀑布流的布局,同时,涉及了豆瓣的相应api的网络请求,进而获取对应item的数据WXML布局由于大多数布局相对一致,因此我采用了组件化的设计,减少代码的冗余,下面是首页的xml布局<!--index.wxml--><searchbar isnavigator="{{true}}"></se.原创 2020-07-01 10:33:45 · 1464 阅读 · 4 评论 -
Android 7.0动态权限方法
1. 基本方法1.1 注册表申请(安卓6.0以下的手机需要)<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.CAMERA" /><uses-permiss...原创 2018-11-07 19:29:37 · 603 阅读 · 0 评论 -
【详细】自定义view实现圆形头像功能
个人中心是每一个app都有的模块,在个人中心中,我们常常可以看到一个圆形有边框(无边框)的头像。作为一个常见的功能,今天我们把它实现一下。1. 需求分析 这个主要分为两部分:一个头像边框,一个是圆形头像显示,我们主要是考虑采用自定义View来实现这个需求。2. 实现过程 废话不多说,看一下代码。2.1 新建一个View类 我们新...原创 2018-11-08 17:20:01 · 545 阅读 · 0 评论 -
傻瓜也可以看懂的——ButterKnife实现原理
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来...原创 2018-11-15 14:11:36 · 339 阅读 · 0 评论 -
【详细】长按APP图标弹出快捷方式,ShortCut功能实现
Shortcuts介绍Android7.1(API Level 25)及以上系统可以自定义Shortcuts,通过在桌面上长按App Icon弹出Shortcut列表,点击某个shortcut可使用户快捷得打开App里常用的或推荐的任务。国内各个厂商基本上在安卓8.0上集成了该功能。见下图 1.1 Shortcuts的简单作用每个Shortcut可以关联一个或多个intents,...原创 2018-11-14 18:10:52 · 11468 阅读 · 8 评论 -
【详细】Android studio统计代码行数,轻松实现
最近经常想看看自己写了多少行代码,但是一行一行统计实在是太费劲了,加上代码中,有一部分是跨平台的代码(ios和Android两端)需要区分统计,十分不便。于是,上网搜了一下,发现了一个神器Statistic(插件)可以智能统计各类代码行数。 1. 首先肯定是将插件下载下来,下载地址:https://plugins.jetbrains.com/plugin/45092. 下载...原创 2018-12-04 18:43:14 · 4723 阅读 · 0 评论 -
一分钟实现动态模糊效果
现在,越来越多的App里面使用了模糊效果,尤其是动效效果中尤为常见。 对于这类需求,Android推出RenderScript。测试表明,使用RenderScript的渲染效率和使用C/C++不相上下,但是使用RenderScript却比使用JNI简单地多!同时,Android团队提供了RenderScript的支持库,使得在低版本的Android平台上也能使用。...原创 2018-11-27 16:22:10 · 1947 阅读 · 0 评论 -
RxView学习及实现按钮防抖功能
RxViewRxBinding是是一组开源库,可将Android的中各类UI控件的动作事件转换为RxJava中的数据流。使用RxBinding,以RxJava观察者模式来处理UI事件.RxView是RxBinding中的一个组件。 引入依赖注意:RxBinding包中包含RxJava的内容,所以就无需再添加RxJava的依赖了。dependencies { ........原创 2018-11-28 16:50:14 · 4150 阅读 · 0 评论 -
【详细】实现多布局的recyclerview
前言在项目中基本上都会用到的 多种item(条目)的加载 比如大家常见的app( <网易新闻>app的新闻的列表,<新闻头条>app的新闻列表) 都是采用了加载多种item的布局。例如下图: 但是我们要如何实现这种功能呢?很多人说用recycleview嵌套recycleview,但是事实上,种方法并不理想,理由是一方面recycleview...原创 2018-12-15 23:06:30 · 438 阅读 · 0 评论 -
一分钟实现柱状图自定义View
前言最近项目组要求实现一个柱状图,本想用第三方实现,但是领导说最近app瘦身,尽量不要采用第三方。于是,渣渣在查阅了 MPchart这个第三方后,自己写了一个自定义View实现对应需求。效果图 实现功能:自定义View本质是draw绘制,我将功能切分了一下:横坐标的名称 按比例实现柱状图的高低 横坐标轴和上边框的线 背景虚线 最低数据跟踪 没有数据显示 数字值显...原创 2018-12-11 18:14:57 · 273 阅读 · 0 评论 -
微信、朋友圈分享功能
微信作为国民app,几乎是每个人手中的必备软件。很多产品都希望通过微信进行导流。今天就探究一下微信分享、分享朋友圈的功能。例如下图: 首先,对于微信分享功能,我们先要考虑一下流程 。对于一个分享功能,我们首先需要先规划自定义分享布局,判断用户手机有无微信app,若有获取对应的权限,然后走友盟的接口回调,实现整个微信分享功能。 自定义布局 这个...原创 2019-01-25 22:36:02 · 551 阅读 · 0 评论 -
【详细】探究startService()和bindService()区别
1、从生命周期来看startService()会调用service的onCreate()、onStartCommand(),调用stopService()后就执行service的onDestroy()bindService()则会调用service的onCreate()、onBind(),调用unBindService()后就执行service的onDestroy()并且当service...原创 2019-01-29 15:28:03 · 782 阅读 · 0 评论 -
ViewPager结合Fragment
viewPager是我们项目中经常需要用到的控件,而这种控件也往往和Fragment碎片一起使用,最近业务有涉及这部分的需求,特此学习记录一下。首先是ViewPager的组成:布局文件中的Viewpager(用于绑定Fragment)、 List集合存放Fragment、Viewpager的适配器其次是流程:1、List中添加fragment 2、adapter获取Fragment管...原创 2019-03-19 20:32:19 · 554 阅读 · 0 评论 -
【详细】Spinner实现三级联动功能
1. 需求分析 在实际开发中,我们经常遇到要求省市县三级联动的下拉框需求,如下图,针对这类需求,我们常用Spinner控件去实现。当用户选择Spinner控件的时候,可以提供一个下拉列表将所有可选的项列出来。供用户选择。 今天,我就研究一下怎么实现三级联动的需求。2. 实现流程在布局文件中添加Spinner控件在Acitvity中获取控件给Spinne...原创 2018-11-10 19:38:57 · 2754 阅读 · 0 评论 -
客户端多个异常文案显示方法
在实际开发中,针对某一界面,我们有不同的显示需求:以app中的消息列表为例,在网络有问题的情况下,我们界面显示网络出现问题;在网络正常,但是没有消息数据的情况下,我们要求显示,没有消息。这是常规的异常显示案例。 但是,有时候为了减少Layout数量,我们不得不将一些异常情况都写在一个界面。添加异常布局方法1. include异常布局<include ...原创 2018-11-04 19:40:10 · 1149 阅读 · 0 评论 -
【详细】Android 判断网络状态,实现app自动静音
在实际应用中,我们不希望在公司内网环境下,打开游戏就显示较大的声音,进而影响其他同事办公环境。因此,就需要让app变得智能,让app可以根据使用者当前网络状态,自动进行静音等操作。本次内容分为两部分:1. 识别网络环境 2. 实现app自动静音。自动静音 首先是实现自动静音功能。/** * 实现静音功能 */private void sile...原创 2018-11-04 19:26:09 · 1346 阅读 · 0 评论 -
一分钟教你学会-Android Service、Intent Service
服务详解Android的四大组件之一,服务是长期运行在后台的应用程序组件。服务不是进程,也不是线程,它和应用程序在同一个进程中,服务中不能做耗时操作,运行在主线程中。主要应用与后台播放音乐,定位服务,每隔一定时间和服务器进行交互。注意服务需要在注册列表中注册! 一,定义安卓的四大组件之一,是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务能够被其他组件启动,绑定,交...原创 2018-10-03 09:12:14 · 265 阅读 · 0 评论 -
Android嵌套滑动机制
概览实现嵌套滑动有三种方案:纯事件拦截与派发方案 基于NestingScroll机制的实现方案 基于CoordinatorLayout与Behavior的实现方案第一种方案:灵活性最高,也最繁琐。因为事件的拦截是一锤子买卖,谁拦截了事件,当前手势接下来的事件都会交给拦截者来处理,除非等到下一次Down事件触发。这很不方便多个View对同一个事件进行处理。第二种方案:其实就是对原始...原创 2018-10-04 15:09:50 · 430 阅读 · 0 评论 -
Android P的新特性
Android P的新特性室内WIFI定位Android P增加了对RTT Wi-Fi协议的支持,以此作为室内定位的基础。 在支持硬件支持的Android P设备上,开启定位并且打开WIFI扫描后就可以使用该功能进行定位。应用可以测量与附近支持RTT的Wi-Fi接入点(AP)的距离。设备必须启用位置并启用Wi-Fi扫描(在设置>位置下)。使用这个功能不会连接到WIFI,而且为了保持隐...原创 2018-10-06 18:18:40 · 315 阅读 · 0 评论 -
Android handle的难点问题及解答
1. 消息的使用new Handler().postDelayed(new Runnable() { @Override public void run() { finish(); overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out); }}, 50...原创 2018-10-06 20:40:19 · 332 阅读 · 0 评论 -
手把手教你-Android 广播机制
一,概述广播(广播)机制用于进程/线程间通信,因此在我们应用程序内发出的广播,其他的应用程序应该也是可以收到的。广播分为广播发送和广播接收两个过程,其中广播接收者广播接收器便是Android的四大组件之一。 广播接收器(广播接收)分为两类:静态广播接收者:通过AndroidManifest.xml中的标签来申明的广播接收器。动态广播接收者:通过AMS.registerRec...原创 2018-09-28 19:37:18 · 241 阅读 · 0 评论 -
TextureView 和 Surfaceview 的区别
为什么用surfaceTexture不用surface来展示呢?ICS之前都用的是surfaceview来展示video或者openGL的内容,surfacaview render在surface上,textureview render在surfaceTexture,textureview和surfaceview 这两者有什么区别呢?surfaceview跟应用的视窗不是同一个视窗,它...原创 2018-10-07 22:21:17 · 2753 阅读 · 0 评论 -
Android 自定义LayoutManager
Android 自定义LayoutManager实现自定义LayoutManager主要的4个步骤: 指定默认的LayoutParams 计算每个ItemView的位置 添加滑动事件 实现缓存其中,主要在onLayoutChildern() 这个回调方法中实现主要功能。指定默认的 LayoutParams 当你继承LayoutManager之后,必须要重写g...原创 2018-10-16 16:04:56 · 1144 阅读 · 0 评论 -
Android一分钟教你会-传递序列化参数
传递序列化参数在ReceiveRedPacketAnimationActivity.java中,我们通过getSerializableExtra()方法来获取参数传递过来的序列化对象// 这是接收参数private void initBundle() { eventEveryWhereCanShowBean = (EventEveryWhereCanShowBean) getI...原创 2018-10-10 14:43:07 · 505 阅读 · 0 评论 -
Android 一行代码实现创建定时任务
Android中的定时任务,有两种任务实现,一种是Java API Timer类实现,另一种是Android的Alarm机制。由于Java中的Timer 类实现存在一个明显短板——不适用于哪些长期在后台运行的定时任务。因为,Android 手机长时间不操作的情况下自动让CPU进入到睡眠状态,这就有可能导致Timer类中的定时任务,无法正常运行。因此,我们推荐使用第二组Alarm机制!...原创 2018-10-10 14:46:07 · 272 阅读 · 0 评论 -
EventBus 学习,自动刷新首页功能
1.EventBus1.1 EventBus是什么? EventBus由greenrobot组织贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架,下面来一张图作为说明。 Even...原创 2018-11-04 18:39:30 · 1275 阅读 · 0 评论 -
Glide缓存- 图片URL带token问题
部门项目的图片资源都是存放在阿里云上面的,最近项目重构,领导决定将内部图片和资料存放在360云上,因此部分支持换成了360云。而360云为了对图片资源进行保护,会在图片的URL地址的基础之上再加上一个令牌参数也就是说,一张图片的URL地址可能会是如下格式:http://url.com/image.jpg?token=d9caa6e02c990b0a 而使...原创 2018-11-04 18:52:02 · 2139 阅读 · 0 评论 -
【详细】Application生命周期简介
一、什么是Application?Android系统会为每个程序运行时创建一个Application类的对象且仅创建一个(例如:打开微信安卓系统会为微信创建一个Application对象,再打开微博安卓系统又会为微博创建一个Application对象),所以Application可以说是单例 (singleton)模式的一个类。Application对象的生命周期是整个程序中最长的,它...原创 2018-09-26 15:35:02 · 5996 阅读 · 0 评论