
Android
文章平均质量分 77
YPLILL
这个作者很懒,什么都没留下…
展开
-
Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)
Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)原创 2023-03-03 15:51:55 · 4707 阅读 · 0 评论 -
Android 圆弧形 SeekBar
Android 圆弧形 SeekBar原创 2023-03-03 15:20:32 · 1464 阅读 · 1 评论 -
Android 自定义TextView解决,未满一行换行问题
1) TextView在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好在一行的行尾,该标点符号就会连同前一个字符跳到下一行显示;2)一个英文单词不能被显示在两行中( TextView在显示英文时,标点符号是可以放在行尾的,但英文单词也不能分开 );如果只是想让标点符号可以显示在行尾,有一个简单的方法就是在标点符号后加一个空格,则该标点符号就可以显示在行尾了;将默认的textview替换为上面的自定义view就可以解决了。原创 2022-10-20 21:10:31 · 2174 阅读 · 1 评论 -
connect to maven.google.com:443 connect timed out 连接不上的解决办法
allprojects { repositories { maven {url 'https://maven.google.com'} maven {url 'https://www.jitpack.io'} jcenter() } } 在build.gradle中进行上述的Google的maven地址配置时报错如下:网上说最新版本的AndroidStudio (Canary 9) + Gradle 已经使用 google...转载 2021-01-06 10:04:40 · 3261 阅读 · 0 评论 -
Android ViewPager Fragment 切换刷新数据,解决生命周期只走一次的问题
前言Activity的生命周期都应该熟悉,Fragment其标准生命周期也仅比Activity多出一些流程,如onCreateView(),比较好理解。了解Activity、Fragment的基础知识可以先转头去看下我的博文:Android Fragment项目中使用及生命周期分析 认识ViewPager页面加载机制 ViewPager的页面缓存机制默认是两个,如果有三...转载 2018-08-03 09:54:18 · 1339 阅读 · 0 评论 -
这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)
前言在Andrroid开发中,网络请求十分常用而在Android网络请求库中,Retrofit是当下最热的一个网络请求库今天,我将献上一份非常详细Retrofit v2.0的使用教程,希望你们会喜欢。如果对Retrofit v2.0的源码感兴趣,可看文章:Android:手把手带你深入剖析 Retrofit 2.0 源码目录1. 简介特别注意:准确来说,Retrofit 是一个 RESTful 的...转载 2018-06-15 17:07:32 · 326 阅读 · 0 评论 -
网络加载框架 - Retrofit
Retrofit是什么?Retrofit其实我们可以理解为OkHttp的加强版,它也是一个网络加载框架。底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装。它的一个特点是包含了特别多注解,方便简化你的代码量。并且还支持很多的开源库(著名例子:Retrofit + RxJava)。还想说一点题外话,Retrofit和OkHt...转载 2018-06-15 17:03:48 · 306 阅读 · 0 评论 -
Android 自定义控件之第三讲:obtainStyledAttributes 系列函数详解
在项目中开发自定义控件时,或多或少都会用到 obtainStyledAttributes(AttributeSet, int[], int, int) 或者 obtainAttributes(AttributeSet, int[]) 函数,它们的主要作用是:根据传入的参数,返回一个对应的 TypedArray 。获取 TypedArray 对象 的函数一共四个:1.public TypedArra...转载 2018-06-15 13:22:25 · 1599 阅读 · 0 评论 -
NestedScrollView中嵌套ViewPager或RecyclerView出现滑动冲突的
NestedScrollView嵌套ViewPager出现的滑动冲突问题描述: ViewPager无法左右滑动, 切无内容显示. 如果有相关Tab与ViewPager相绑定, 会导致Tab切换卡顿. 问题布局复原: <android.support.v4.widget.NestedScrollView android:id="@+id/home_scroll_view" ...原创 2018-06-08 14:41:32 · 3023 阅读 · 1 评论 -
应用是否正在运行、方式打印Activity类名
//判断应用是否正在运行 ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); boolean isAppRunning = false; List<ActivityManager.Runnin...原创 2018-06-08 14:39:48 · 324 阅读 · 0 评论 -
EditText内容变化的监听
private TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { // 输入的内容变化的监听 Log....原创 2018-06-08 14:38:29 · 438 阅读 · 0 评论 -
CoordinatorLayout配合AppBarLayout,Toolbar和TabLayout的使用
今天要实现的效果如下图所示: 当ToolBar滚出屏幕的时候,TabLayout固定在屏幕顶部,然后下滑的时候在划出Toolbar.先来介绍下AppBarLayout控件,它是继承LinerLayout实现的一个ViewGroup容器组件,是为了Material Design而设计的App Bar,支持手势滑动操作。默认的AppBarLayout是垂直方向的,它的作用是把AppBarLayout...转载 2018-06-08 14:37:18 · 774 阅读 · 0 评论 -
Android递归解压缩文件
工具类代码如下:import android.util.Log;import com.example.hj.myapplication.BuildConfig;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInp...原创 2018-06-08 14:31:43 · 349 阅读 · 0 评论 -
Android 自定义控件之第二讲:TypedArray 详解
Google 开发者平台是这么解释这个类的:大体意思是:TypedArray 是一个数组容器,在这个容器中装由 obtainStyledAttributes(AttributeSet, int[], int, int) 或者 obtainAttributes(AttributeSet, int[]) 函数获取到的属性值。用完之后记得调用 recycle() 函数回收资源。索引值用来获取 Attri...转载 2018-06-15 11:28:52 · 1015 阅读 · 0 评论 -
Android retrofit 注解@QueryMap和@Body的区别
使用retrofit这样框架快一年了,以前使用它传递参数时都是用@QueryMap注解传递,虽然知道这样不是很好,但是当时换框架的时候看到工作量太大就没有换成实体类形式了,之前的使用方式如下图:由于最近在研究java后台,搭建了一个SSM框架想测试一下;因为之前以为HashMap只能采用这种方式传递,在今天的测试中发现并不是,其实使用HashMap同样可以采用@Body注解,而且@QueryMap...转载 2018-06-15 17:12:59 · 1287 阅读 · 0 评论 -
Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
声明:原创作品,转载请注明出处http://www.jianshu.com/p/7b839b7c5884之前公司的项目用到了MVP+Retrofit+RxJava的框架进行网络请求,所以今天特此写一篇文章以做总结。相信很多人都听说过MVP、Retrofit、以及RxJava,有的人已经开始用了,有的人可能还不知道这是什么,以及到底怎么用。不过没关系,接下来我将为你一一揭开他们的神秘面纱,然后利用这...转载 2018-06-15 17:26:18 · 313 阅读 · 0 评论 -
详解Android Material设计中阴影效果的实现方法
View可以投下的阴影,一个View的elevation值决定了它的阴影的大小和绘制的顺序。可以设置一个视图的elevation,在布局中使用属性:android:elevation?<TextView android:id="@+id/my_textview" android:layout_width="wrap_content" android:layout_height="wra...转载 2018-07-02 17:09:11 · 895 阅读 · 0 评论 -
Android MVVM快速开发框架
基于DataBinding框架,MVVM设计模式的一套快速开发库,整合Okhttp+RxJava+Retrofit+Glide等主流库,满足日常开发需求。使用该框架可以快速开发一个Android应用。MVVMHabit目前,android流行的MVC、MVP模式的开发框架很多,然而一款基于MVVM模式开发框架却很少。MVVMHabit则是一款以谷歌的databinding为基础,整合Ok...转载 2019-03-05 17:27:48 · 751 阅读 · 0 评论 -
Android Fragment切换动画的2种实现方式
Fragment切换动画在Activity跳转之间可以设置动画效果,例如平移,渐变,旋转等动画,当然在Fragment中也可以设置切换的动画效果,可以达到跟ViewPager切换动画类似的效果。在Fragment中设置自定义切换动画主要分为了两种情景,一种是使用 android.app.Fragment包里面的Fragment类时,FragmentManager里面的FragmentTransa...转载 2019-01-23 10:39:00 · 1297 阅读 · 2 评论 -
RadioGroup 自动换行且保留点击事件
相信用过RadioGroup的同学都踩过很多坑,其中之一就是这个控件设计的不是很合理,不能设置里面的radiobutton的 排列方式(几行几列),导致我们开发的时候要调整里面的布局很是麻烦。另外一个坑是 动态new 的时候选默认值的问题,这个在之前的一篇文章 RadioGroup中RadioButton默认选中问题 这个里面已经提到过了,就不再细说了。今天主要说说这个radiogroup怎...转载 2019-01-28 13:15:10 · 446 阅读 · 0 评论 -
setVisibility()设置过度动画
在做项目的过程中用到setVisibility()时,有时感觉过渡非常生硬。于是为其添加消失的动画让它过渡自然些。于是在网上找了好久方法,比较模糊。自己试了试,把实现的方法写出来。实现的方法很简单:只需要在布局文件中添加 android:animateLayoutChanges="true" 这个属性就可以了。值得注意的是android:animateLayoutChanges="...转载 2019-01-09 11:58:52 · 3418 阅读 · 0 评论 -
Can't toast on a thread that has not called Looper.prepare()
前言最近一段时间在忙着开发一款自己的APP,将自己常用的功能需求都加入进入,同时在GitHub上跟着大牛们学习新的技术,提升自己的技能,在开发的过程中不断的发现问题和解决问题。在开发过程遇到了这样一个问题:Can't toast on a thread that has not called Looper.prepare(),如果在一个线程中没有调用Looper.prepare(),就不能在...转载 2018-12-04 15:27:36 · 4603 阅读 · 2 评论 -
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/78582548本篇将是我们这个Glide系列的最后一篇文章。其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了。那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定,因此整个系列也都是基于3.7.0版本来写的。而现在,Gli...转载 2018-11-21 15:59:37 · 224 阅读 · 0 评论 -
android如何监听应用进入后台,回到前台时做相应逻辑
当我们使用手机银行app时,突然收到短信或电话时app会进入后台,再次回到手机银行界面的时候会被要求重新输入登陆密码或验证指纹,这一需求的设计主要是出于安全性考虑,验证用户身份,保证资金的稳固。 那么,以上的需求又是怎么实现的呢?怎么监听app的状态,达到app进入后台再回到前台时,总是跳出一个界面要求用户输入登陆密码或验证指纹呢?1.在application中注册监听方法,一般写在onC...转载 2018-09-11 09:18:52 · 5575 阅读 · 0 评论 -
Android fragment 设置横屏后,锁屏之后重启手机导致奔溃问题
因为做的是平板程序,所以默认给它设置了横屏的功能,但是遇到一个很奇怪的问题是锁屏之后,在解锁打开手机,我的手机应用就无缘无故的退出了。后来分析原因是因为锁屏之后,系统默认变为竖屏,这样activity就destory,重新执行了oncreate,而原本fragment就是与activity的生命周期挂钩,打开时,由于父activity已经销毁,自然会报错,所以解决的办法,参考这位前辈的连接如下:...转载 2018-09-06 13:44:45 · 434 阅读 · 0 评论 -
ScrollView嵌套GridView导致GridView不滑动
private float scrollDownY;private float scrollMoveY;mGridView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { sw...原创 2018-06-28 09:46:32 · 849 阅读 · 0 评论 -
Android 自定义控件之第一讲:attr format 取值类型
1. reference:参考某一资源ID。(1)属性定义:<declare-styleable name = "名称"> <attr name = "background" format = "reference" /></declare-styleable>123(2)属性使用:<ImageView android:layout_转载 2018-06-15 10:55:04 · 303 阅读 · 0 评论 -
Android 雷达图(蜘蛛网状图)
先看效果 上代码package com.example.hj.myapplication;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Pat...原创 2018-06-14 17:20:14 · 1768 阅读 · 0 评论 -
多线程断点续传GreenDao版
本文参考:http://blog.youkuaiyun.com/inter_native/article/details/78603256首先要引入GreenDao,具体引用请参考本人的前面的博客,这里就不再写了;废话完就要开始写了首先要写一个User类:@Entitypublic class User { @Id private Long id; private Integer th...转载 2018-06-07 13:47:09 · 164 阅读 · 0 评论 -
Design库-TabLayout属性详解
序上图是简书Android端的主页Tab,在其他的App中Tab也是很常见的,它的实现方式也有很多:TabHost,自定义控件(第三方库),RadioGroup等等。这里主要介绍Android Design库中的TabLayout的使用。1.什么是TabLayout在源码中给出了TabLayout的定义:TabLayout provides a horizontal layout to displ...转载 2018-06-11 17:53:39 · 180 阅读 · 0 评论 -
Android自定义View 简单实现多图片选择控件
前言相信很多朋友在开发中都会遇到图片上传的情况,尤其是多图上传,最 经典的莫过于微信的图片选择了。所有很多情况下会使用到多图选择。 所以就有了这篇文章,今天抽点时间写了个控件。支持自定义选择图片的样式支持设置图片选择数量支持图片预览,删除支持图片拍照先来看看效果实现分析假如不定义控件,我们要实现这样一个功能,无非是写个GridView在item点击的时候去显示图片进行选择,在返回界面的时候进行Gr...转载 2018-06-11 17:37:39 · 1079 阅读 · 0 评论 -
Android:这是一份全面 & 详细的Webview使用攻略
前言现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图京东首页那么这种该如何实现呢?其实这是Android里一个叫WebView组件实现今天,我将献上一份全面介绍 WebView的常见用法。目录文章目录1. 简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的web...转载 2018-06-11 17:30:57 · 36259 阅读 · 1 评论 -
android 多线程断点续传下载---强大的开源XUtils
XUtils下面给大家介绍android的一个开源项目,它可以帮你干好多事情,废话不多说,步入正题: 这是xUtil的下载地址,在GitHub 目前xUtils主要的四大模块:DbUtils模块: android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,C...转载 2018-06-11 17:17:43 · 410 阅读 · 0 评论 -
Android网络编程之——文件断点下载(暂停/继续/重新下载)
一:关于断点下载所涉及到的知识点1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置HttpURLConnection connection = null;//设置下载请求属性connection.setRequestProperty();1233.RandomAccessFile 对文件进行写入RandomAccessFile rw...转载 2018-06-11 17:05:26 · 1559 阅读 · 0 评论 -
Android RecyclerView局部刷新
关键:public final void notifyItemChanged(int position, Object payload)RecyclerView局部刷新大家都遇到过,有时候还说会遇见图片闪烁的问题。优化之前的效果:优化之后的效果:如果想单独更新一个item,我们通常会这样做,代码如下:mLRecyclerViewAdapter.notifyItemChanged(position)...转载 2018-06-11 16:21:55 · 2373 阅读 · 0 评论 -
Context都没弄明白,还怎么做Android开发?
Activity mActivity =new Activity()作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity本质上也是一个对象,那上面的写法有什么问题呢?估计很多人说不清道不明。Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于...转载 2018-06-11 15:13:25 · 332 阅读 · 0 评论 -
以屏幕宽或者高为基准等比例缩放图片(充满宽或者充满高)
Picasso.with(this).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1515779973580&di=787d4179991200c6199d7b6a49c3223f&imgtype=0&src=http%3A%2F%2Fimg3.r...原创 2018-06-11 15:00:26 · 1315 阅读 · 0 评论 -
Android四大组件之Service 远程服务 通过AIDL进行进程间复杂类型数据交换
本篇继续介绍如何传递复杂类型数据,具体代码请看(https://github.com/Mangosir/RemoteServiceMath)我们先新建一个对象Result,实现Parceable接口,因为不同的进程之间不能直接传输对象数据,只能传基础类型等数据,在上一篇有解释,要想传递,就得对对象数据进行序列化和反序列化,比如现在我们要将一个对象的数据从客户端传到服务端去,我们就可以在客户端对这个...转载 2018-05-28 17:22:09 · 313 阅读 · 0 评论 -
Android四大组件之Service 远程服务解析,通过AIDL达到进程间通信交换基础数据
简介远程服务:Android 系统与Windows系统的通信原则基本一致,进程就是安全策略的边界,不同的APP属于不同进程 Process,一个进程不能直接访问其他进程的资源。需要实现多进程间的通信,就要使用IPC(Inter Process Commnication)进程间通信技术。Android 系统的 IPC 机制是基于AIDL(AndroidInterfaceDefinition Lang...转载 2018-05-28 17:20:16 · 473 阅读 · 0 评论 -
Android Service生命周期,本地服务远程服务,前台服务后台服务,启动方式,与IntentService区别全面解析
Service内容基本会在这章总结到,总结顺序如下:1.Service概述2.Service生命周期概述3.Service分类:* 按启动方式分类:通过Context.startService()启动,通过Context.bindService启动(顺带讲到Service与Thread区别)* 按寄存方式分类:本地服务,远程服务(讲到使用AIDL进行进程间通信)* 按运行方式分类:前台服务,后台服...转载 2018-05-28 17:18:07 · 722 阅读 · 0 评论