Android

Android自定义View圆形图片控件代码详解

2020-12-09
前言 在日常开发中,圆形的图片效果还是很常见的.可以通过给Paint设置Xfermode来实现,这里简单记录如下. 实现 实现圆形效果的核心是PorterDuffXfermode,对于PorterDuffXfermode,这里不展开,可以查询相关资料. 核心代码 //绘制背景 canvas.drawCircle(mSize / 2, mSize / 2, mSize / 2, mPaint); //设置模式为:显示背景层和上层的交集,且显示上层图像 mPaint.setXfermode(new

Android 启动页白屏解决方案

2020-12-09
当我们打开app的时候是不是会有一瞬间的白屏然后再进入主活动,虽然这并不会造成什么不好的后果,但是感觉用户体验就不是很好.像网易云音乐等等,打开一瞬间就显示了他们的loge,无缝衔接,没有白屏,怎么做到的呢? 一开始我的思路是这样的.可能是因为我们的主活动逻辑太多,所以加载会变慢,导致显示白屏.如果使用一个只显示一张本地图片的活动,那会不会就不会显示白屏了呢.话不多说我们尝试一下: Activity中的代码: /** * 启动页,显示倾旅的logo,停顿2秒后跳转 */ public clas

Android仿抖音主页效果实现代码

2020-12-09
写在前面 各位老铁,我又来啦!既然来了,那肯定又来搞事情啦,话不多说,先上图! "抖音"都玩过吧,是不是很好玩,我反正是天天刷,作为一个非著名的Android低级攻城狮,虽然技术菜的一匹,但是也经常刷着刷着会思考:咦?这玩意是用哪个控件做的?这个效果是咋实现的啊?由于本人技术水平有限,所以今天咱就先挑个比较简单的来看看是如何实现的,思考再三,我们就拿抖音首页的这个效果来练练手吧,话不多说,开搞! 一.准备工作 我们先不急着写代码,先对抖音的这种效果做一个简单的分析,首先需要明确的是它是

Android Intent-Filter匹配规则解析

2020-12-08
前言 我们都知道,活动的启动方式有两种:一种是显示启动,或者很简单,指定一个活动的class就可以了:另外一种就是隐式启动,这种要指定action,category,data信息,例如我们在启动系统相机的时候.看一下代码: Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityFor

Android使用系统相机进行拍照的步骤

2020-12-08
前言 我们在日常的开发中有时候会遇到需要用到相机的需求,而相机也是很常用的东西,例如扫二维码啊拍照上传啊等等.这里我不讲像qq那样自定义很强的拍照功能(事实上我也不会),讲个最简单的调用系统相机拍照并储存 调用系统相机步骤 这里我通过一个简单的例子来讲这个内容. 我自己写了一个demo,布局很简单: <Button android:id="@+id/button" android:layout_width="wrap_content" android:layo

Android 调用系统相册选择照片

2020-12-08
前言 在相册里选择图片上传也是很常见的功能了例如微信朋友圈等等.但是他们是自定义的选择器,可以选择多张图片并修改.这里我们讲一个最简单的:调用系统的相册选择一张图片并展示.另外有的读者还想到要通过相机拍照来选择图片的功能,也可以参考一下我的另一篇文章Android使用系统相机进行拍照 使用步骤 这里我是通过一个简单的demo来讲解怎么去实现这个功能.首先看布局: <Button android:id="@+id/button2" android:layout_width=&quo

解决Android自定义view获取attr中自定义颜色的问题

2020-12-05
好久不见,最近有点忙,好久没有发文章了,前天有个小学弟在写项目的过程中遇到了这个问题,由此写一篇文章. 项目场景: Android自定义View在布局中设置颜色 问题描述: 以下为学弟的代码 //attrs文件 <attr name="leftcolor" format="color"/> <attr name="rightcolor" format="color"/> //Java文件代码,获取颜色

Android Retrofit2网路编程实现方法详解

2020-12-01
Android里面本身有OKHttp,不过不是很好用,这里就用Retrofit2,简单好用. 首先,需要加入网络权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission andro

Android动画系列之属性动画的基本使用教程

2020-12-01
前言 属性动画相较帧动画和补间动画更强大,帧动画和补间动画只能应用于 View 及其子类,而属性动画可以修改任何对象的属性值,属性值可在指定的一段时间内自动改变,根据对象属性值的变化进而实现更复杂的动画. 属性动画的常用设置 ValueAnimator ObjectAnimator 关键帧 插值器和估值器 属性动画的常用设置 下面是属性动画的常用设置,具体如下: //设置属性动画持续时间 animator.setDuration(2000); //设置属性插值器 animator.setInte

Android结合kotlin使用coroutine的方法实例

2020-12-01
最近入了Android坑,目前还处于疯狂学习的状态,所以很久都没有写博客了.今天记录一个小代码片段,在Android上使用coroutine 的小例子. 由于我自己是做一个记账软件来学习的,我用了gRPC,最开始我是使用线程来做网络请求的: thread { // 网络请求代码 runOnUiThread { // 更新UI的代码 } } 今天把这一套全部重写成用coroutine. 首先coroutine得有个调度器,英文叫做 "Dispatchers",有这么几个: Dispatc

Android RecyclerView网格布局示例解析

2020-12-01
一个简单的网格布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/ap

adb通过wifi连接android设备流程解析

2020-11-30
在开发的过程中大家一般都会选择使用数据线连接的方式进行调试,但是有些时候比如使用模拟器时就不能这样了,所以有必要来研究下怎么使用adb通过wifi连接我们的Android; 那么我们今天分别使用adb连接移动设备,模拟器 case 1:连接Android移动设备 1.USB连接手机和电脑: 2.运行 adb devices,测试是否连接成功,能出现设备列表即可: 3.运行 adb tcpip 5555 然后断开 USB 连接. 4.通过手机状态信息,查看手机的IP地址,一般会在[设置]-[关于手

Bitmap海量数据快速查找去重代码示例

2020-11-30
题目描述 给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用. 如果你只有10MB的内存呢? 解题思路 对于40亿个整数,如果直接用int数组来表示的大约要用4010^84B=16GB,超出了内存要求,这里 我们可以用bitmap来解决,bitmap基本思想是一位表示一个整数,比如我们有6个数据: 1 7 3 1 5 6 4 假设bitmap容量为8,当插入7时 bit[7]=1,以此类推 bit[3]=1 bit[1]=1 bit[5]=1 -

RecyclerView优雅实现复杂列表布局

2020-11-29
这次学习的内容是使用RecyclerView来实现一些较为复杂的布局,比如一个item: 最左边是一个imageview,中间部分为textView,textView下面又是一个textView,最右边为一个imageview. 1.首先在activity_main.xml中添加RecyclerView,随后正如之前所说的分别针对左中右新建3个XML布局文件命名为item_type_one.two.three.随后对其进行布局配置. 2.新建一个adapter添加模拟数据.然后针对布局新建三个v

RecycleView实现item侧滑删除与拖拽

2020-11-27
本文实例为大家分享了RecycleView实现item侧滑删除与拖拽的具体代码,供大家参考,具体内容如下 一.添加依赖 // 侧滑删除依赖 implementation 'com.yanzhenjie.recyclerview:support:1.3.2' 二.布局文件 这里使用的的控件是: com.yanzhenjie.recyclerview.SwipeRecyclerView <?xml version="1.0" encoding="utf-8"?&g

Android Studio 全屏沉浸式透明状态栏效果的实现

2020-11-27
如何实现?1.)首先实现全屏 第一种:继承主题特定主题 在Android API 19以上可以使用****.TranslucentDecor***有关的主题,自带相应半透明效果,Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor两种主题为新增加的,所以要新建values-v19文件夹并创建styles文件添加如下代码 <style name="AppBaseTheme&q

Android Studio实现音乐播放器

2020-11-24
Androidstudio音乐播放器,供大家参考,具体内容如下 实现目的:利用广播在myapplication中原本button点我暂停按钮是灰色无法点击的,此时发送一条短信给自己的安卓手机,按钮变成黑色,音乐开始播放,此时点击 点我暂停 按钮,音乐停止. 结果截图: 发送短信给自己后:,点我暂停 按钮变成黑色,并开始播放音乐: 此时点击点我暂停按钮,音乐暂停 广播 Android 应用与 Android 系统和其他 Android 应用之间可以相互收发广播消息,这与发布-订阅设计模式相似.这些

Android自定义view实现拖动小球移动

2020-11-24
Android应用界面中可以看得见的都是由一个个的View所组成的,几乎所有的可视的控件都是基于View写的.在View中提供了对touch也就是手势的捕获和传递,我们可以对View里面手势的重写来达到我们所需要的特性.比如说我们现在要做一款游戏,内容很简单,就是要实现让如图所示的一个黑色的小球在根据手指移动而在手机屏幕内移动. 我们可以重写View里面的public boolean onTouchEvent(MotionEvent event)方法,来获取到所有的手势操作,再从中选择出所需要的

Flutter实战教程之酷炫的开关动画效果

2020-11-24
前言 此动画效果是我在浏览文章时发现的一个非常酷炫的效果,于是就使用 Flutter 实现了. 更多动画效果及Flutter资源: https://github.com/781238222/flutter-do 添加依赖 在项目的 pubspec.yaml 文件中添加依赖: dependencies: wheel_switch: ^0.0.1 执行命令: flutter pub get 使用 WheelSwitch( value: false, ) 组件默认的宽高分别是80.30,也可以指定宽高

详解Flutter点击空白隐藏键盘的全局做法

2020-11-24
开发原生页面的时候,在处理键盘事件上,通常的需求是,点击输入框外屏幕,要隐藏键盘,同样的,这样的需求也需要在 Flutter 上实现, Android 上的实现方式是在基类 Activity 里实现事件分发,判断触摸位置是否在输入框内. /** * 获取点击事件 */ @CallSuper @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.MotionEv