自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (6)
  • 收藏
  • 关注

原创 AndroidTV开发8-------TV中View焦点放大缩小效果工具类的封装演化之路

上一篇文章,我们讲了TV开发中常见的View处于焦点状态时放大缩小带边框效果,这一篇博客将讲解为啥要封装?如何封装焦点状态放大缩小工具类以及封装的演化之路。1.为啥要封装成一个工具类,首先我们看之前的代码:@Overridepublic void onFocusChange(final View v, boolean hasFocus) { //初始化放大倍数 float scaleX1, scaleX2, scaleY1, scaleY2; scaleX1 = scal

2020-10-12 01:21:18 113 2

原创 VMware安装Ubuntu18.0.4-1详细过程

准备工作一.下载VMware.VMware下载地址为:城盘下载:https://wwwzdfanscom.ctfile.com/dir/17667126-29444776-10f3a9/百度云下载:https://pan.baidu.com/s/1xMBIIGRu48hvsOvxcGBEPw下载完成即可安装,安装可以全部采取默认,看个人而定,博主的安装目录是自选的。安装完成...

2018-09-18 01:14:09 11624 5

原创 2020年终总结

2020是不平凡的一年,因为疫情被隔离了三次,好在我很少出门,防护措施也比较到处,基本上和病毒无缘。但是大家平时记得戴口罩,尽量不去聚集,在全部各地的帮助下,武汉上下和湖北人民齐心协力,最终大家战胜了病魔,取得了阶段性胜利~~这里要感谢奋战在一线的医护人员和全国各地的热心人士,是你们用一次次的奋战,一天天的坚持,用生命和身躯谱写了一次热血的篇章.一个个陌生而又熟悉的面孔,一双双充满褶皱的手,一张张布满伤痕的脸,在我们我要由衷地感谢你们~~向你们致敬,你们是湖北的英雄,更新全国人民的英雄,谢谢...

2021-01-03 01:14:55 31

原创 Android中Aop的简单使用和学习

一、简介:在Android 中使用注解主要有以下几个作用:1.和编译器一起给开发者提示警告信息2.配合一些ide 可以更加方便快捷 安全有效的编写Java代码。谷歌出的support-annotations这个库 就是主要干这个的。3.和反射一起 提供一些类似于spring 可配置的功能,方便简洁。二、使用:2.1导包:在App的build目录下引入如下依赖:implementation 'org.aspectj:aspectjrt:1.8.9'2.2在项目的build

2021-01-02 23:19:58 17

原创 Java基础之线程池基本使用

1.线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler)2.使用线程池的好处: 降低资源消耗:通过重复利用已..

2020-12-28 01:28:56 44

原创 Java基础之List乱序排列

Java中乱序排序很常见,给定一个数组,要求把数组内元素的顺序随机打乱,然后输出。有以下几种方法:1.使用Collections.shuffle实现List<String> User = new ArrayList<String>();User.add("a");User.add("b");User.add("c");User.add("d");User.add("e");//使用Collections.shuffle实现乱序排序Collections.s

2020-12-25 00:48:34 95

原创 Java基础之去除List集合中的重复元素

在java中去除list集合中的重复元素很常见,这里总结一下几种方法。1、使用for循环list中的所有元素然后删除重复/** * 使用for循环删除list中的重复元素 * @param list * @return */public static List removeDuplicate1(List list) { for (int i = 0; i < list.size() - 1; i++) { for (int j = list.size() -

2020-12-22 03:00:10 155

原创 Android使用Kotlin+Retrofit+RxJava+MVP实现简单的网络请求封装

上一篇博客我们讲了kotlin+retrofit+rxjava实现网络请求的简单实现,本篇博客将实现之前的基础上实现kotlin+retrofit+rxjava+mvp的简单封装实现网络请求.请求的url为:const val BASE_SERVER_URL = "https://www.wanandroid.com"1.BaseActivity代码如下:/** * @作者: njb * @时间: 2020/12/3 17:33 * @描述: */abstract class B

2020-12-17 11:57:29 77

原创 Android使用Kotlin+Retrofit+Rxjava实现简单的网络请求

kotlin在使用中也有一段时间了,这里分享一下最基本的使用Kotlin+Retrofit+Rxjava实现网络请求:这里以wanAndroidApi为例。1.请求文章列表2.具体代码:/** * 获取首页文章列表 */private fun getArtList() { val retrofit = Retrofit.Builder() .baseUrl(Constant.BASE_SERVER_URL) .addConverterFactor

2020-12-16 01:46:23 114

原创 Java基础之实现两数之和

题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]实现的代码如下:/** * 实现两个数之和,并返回他们的下标 * @param nums 数组 * @param.

2020-12-16 01:03:12 37

原创 Java多线程基础知识之————可重入锁和非可重入锁

可重入锁和不可重入锁的概念:1.可重入锁:所谓可重入锁,意味着线程可以进入它已经拥有的锁的同步代码块儿.2.非可重入锁所谓不可重入锁,即若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞.3.说明:(1)可重入锁就是一个类有A、B方法,A、B都有获得同一把锁,当A方法调用时获得锁,在A方法的锁还没有被释放时,调用B方法时,B方法也能获得该锁.这种情景,可以是不同的线程分别调用这两个方法;也可以是同一个线程,A方法中调用B方法,B方法中调用A方法

2020-12-14 00:18:47 21

原创 Java接口开发——IntelliJ IDEA部署tomcat时出现No artifacts marked for deployment

1.今天在学习接口开发,部署tomcat时出现以下问题.、2.问题原因:由于没有配置项目的war包3.解决方法:File->Project Structure->Artifacts5.点击ok,然后点击Apply即可.

2020-11-30 18:29:04 30

原创 Java利用socket实现客户端和服务器相互通信

上一篇讲解了客户端给服务器发送消息,这一篇讲解客户端和服务器相互发送消息,客户端发送消息给服务器,服务器收到客户端的请求然后返回信息给客户端。1.服务器代码:** * @author: njb * @Date: 2020/11/28 18:49 * @desc: 服务器socket */public class ServerSocket { //客户端发送信息 public static void main(String[] args) { Output

2020-11-28 22:46:36 240

原创 Java利用socket实现客户端给服务器发送消息

一、 socket概念套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。一个Socket是一对IP地址和端口。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。你可以这么理解:soc

2020-11-27 20:04:34 347 1

原创 Android获取外网和内网ip地址

最近有个需求需要获取外网ip地址,找了很多资料都不行,要么是报错,于是自己整理了一下方法:1.获取内网ip地址:/** * 获取内网ip地址 * @param context * @return */public static String getIntranetIPAddress(Context context) { NetworkInfo info = ((ConnectivityManager) context .getSystemService(C

2020-11-27 18:18:12 57

原创 Android实现自定义进度条

最近有个需求需要实现自定义加载进度条,可以设置加载进度和进度条颜色,于是研究了一下,写了一个自定义的进度条.1.自定义进度条代码如下:2.完整代码:package com.example.tvrecyclerview.view;import android.annotation.SuppressLint;import android.content.Context;import android.content.res.TypedArray;import android.graph

2020-11-08 23:21:15 50

原创 解决AndroidStudio报错问题:Missing essential plugin

今天下载了Android4.2.0Canary14最新版,打开时突然报了一个错,1.错误现象:AndroidStudio 无法正常打开,打开之后弹出报错窗口显示:Missing essential plugin: org.jetbrains.androidPlease reinstall Android Studio from scratch.2.错误原因:更新插件后Android StudioPlugins中某个选项被取消勾选。3.解决方法:找到 .AndroidStudio4.

2020-10-28 00:06:55 370 7

原创 Java基础之删除list中的某个元素

1.Java中删除list中的某个元素方法如下:2.运行结果截图:3.完整代码:package example;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class RemoveListTest { public static void main(String[] args){ List<Book> list = ne

2020-10-27 20:47:14 693

原创 Java基础之比较两个double类型的数据大小

1.在java中比较两个double的数据不能直接比较,否则会丢失精度,我们来写个例子测试一下:打印结果为:2.加上String.valueof()打印结果为:3.从上图可以看出结果和预期一样,就是我们需要的。可以发现,直接使用Double类型时,会存在精度的误差,使用Double.toString()方法可以规避。查看Double类,可以看到它使用的是FloatingDecimal.toJavaFormatString()方法,底层基于IEEE 754标准。.

2020-10-27 00:39:36 208

原创 2020.10.24参加全球第二届移动开发者大会的一些收获

今天是程序员的节日,参加了这一届的移动开发者大会,签到就中了一个32g的u盘,运气还是蛮好的~~说说都有哪些收获1.小米实验室高级AI工程师讲解了他们MACE框架的优势和应用以及未来的发展,数据图表做了很多,没有接触过这一块,所以技术不说很了解,就感觉很厉害。2.MobTech的项目总监讲解了移动App开发的合规改造和MobTech的SDK使用调整。...

2020-10-24 23:52:30 186 1

原创 AndroidTV开发9——远程adb调试设备

上一篇我们分析了TV开发中View获得焦点时放大缩小效果封装演化之路,这一篇我们讲一讲TV开发中的远程调试问题首先我们说一说Android开发中怎么连接远程TV和盒子?即远程ADB调试.前提是配置好adb环境变量,关于怎么配置ADB环境变量这里就不讲了,和配置Java环境变量一样简单,不会的可以参考如下博客如何配置adb环境变量:https://blog.csdn.net/songzi1228/article/details/82746086常用的adb命令如下:1.连接远程设备的adb命令

2020-10-22 00:00:01 123

原创 AndroidTV开发7————实现仿小米电视和各种盒子TV焦点放大缩小效果

AndroidTV中最常见的就是焦点效果,这个实现很简单,在代码设置view.setFocusable(true),布局中focusable="true",然后添加view获得焦点时的效果即可。但是本文不讲这些,而是讲解View获取焦点有一个放大缩小效果,当view放大时处于临近的View之上并且不能被遮挡,当view缩小时要恢复原来的大小。1.先放几张效果图:2.方案分析,网上的有如下方案:(1):MainUpView:(2):MetroItemFrameLayout(何俊林大神的

2020-09-29 02:27:27 176

原创 AndroidSDK开发2————SDK初始化问题

上一篇文章讲了将项目或者moudle打成aar的过程,但是打成aar之后也会遇到一系列的问题:1.SDK初始化问题和组件间通信问题2.SDK网络请求和第三库的依赖问题3.SDK包大小的优化4.SDK的混淆和加密5.SDK的版本兼容问题,比如客户使用的是android support,而你是androidx本文将讲解SDK的初始化问题,当你的SDK中有application和写好回调方法提供给第三方客户时,客户的项目也有Application时怎么办?如果客户的项目使用的是组件化的话.

2020-09-29 01:30:41 118

原创 Android Jetpack应用指南学习笔记10————NavigationUi的简单使用

Fragment的切换,除了Fragment页面本身的切换,通常还伴有App bar的变化。为了方便统一管理,Navigation组件引入了NavigationUI类。1.配置环境:(根据官网的文档)要在您的项目中添加 Navigation 支持,请向应用的build.gradle文件添加以下依赖项:dependencies { def nav_version = "2.3.0" // Java language implementation implementation "...

2020-09-23 01:04:08 116

原创 Android Jetpack应用指南学习笔记9————Room数据库的升级

1.添加room依赖:implementation "androidx.room:room-runtime:2.2.5"annotationProcessor "androidx.room:room-compiler:2.2.5"2.指定数据库导出路径:javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schem

2020-09-08 00:15:58 93

原创 Android Jetpack应指南学习笔记8——Navigation(二)使用safe args传递参数

在android中,未使用safe args之前,通常我们Fragment之间传递参数是这样的:1.传递参数//未采用safe args的传递方式Bundle bundle = new Bundle();bundle.putString("user_name", "Michael");bundle.putInt("age", 30);Navigation.findNavController(v).navigate(R.id.action_mainFragment_to_secondFragm

2020-09-06 19:06:06 327

原创 Android Jetpack应用指南学习笔记7————LiveData+ViewModel实现Fragment之间的通信

在AndroidJetpack应用指南学习笔记5中LiveData与ViewModel可以结合使用,ViewModel能够将数据从Activity中剥离出来。只要Activity不被销毁,ViewModel会一直存在,并且独立于Activity的配置变化,即旋转屏幕导致的Activity重建,不会影响到ViewModel。Fragment可以看作是Activity的子页面,即,一个Activity中可以包含多个Fragment,这些Fragment彼此独立,但是又都属于同一个Activity。基于这

2020-09-05 23:26:43 261

原创 Android Jetpack应用指南学习笔记6——Navigation(一)基本使用

一.在Android中单个Activity嵌套多个Fragment的UI架构方式,已被大多数Android工程师所接受和采用。但是,对Fragment的管理一直是一个比较麻烦的事情,工程师需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。这其中还包括了对应用程序的App bar的管理,Fragment间的切换动画,Fragment间的参数传递,总之,使用起来不是特别友好。为此,Android Jetpack提供的一个名为Navigatio..

2020-09-05 18:28:46 92

原创 Android支付SDK开发——在App中调起H5支付的实现

在Android开发中支付很常见,但是要实现原生调起H5支付很少,之前做App支付也踩过不少坑,App调起H5支付同样坑很多,这里说说App调起H5支付的实现方式和问题。1.App中调起WebView页面的微信和支付宝支付的方法如下:2.webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favi

2020-09-01 01:14:11 259

原创 Android Jetpack应用指南学习笔记5———Room与LiveData+ViewModel的结合使用

1.Android JetPack学习笔记4中介绍了《Room的基本使用》。每次数据库中的数据发生变化后,我们都需要开启一个工作线程去获取数据库中的内容。这让我们觉得不方便,我们希望数据在发生变化时,我们能自动收到通知,这就是LiveData。2. LiveData通常结合ViewModel一起使用。我们知道ViewModel是用来存放数据的,因此我们可以将数据库放在ViewModel中进行实例化。但数据库在实例化的时候需要Context,而ViewModel不能传入任何带有Context引用的对象,.

2020-09-01 00:36:50 155

原创 Android Jetpack应用指南学习笔记4———Room的简单使用

1.Android采用Sqlite作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(Object Relational Mapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,GreenDAO等。Google也意识到了推出自家ORM的必要性,于是有了Room。2.Room 包含 3 个主要组件: 数据库:包含数据库持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入点。使.

2020-08-28 23:29:07 917

原创 Android Jetpack应用指南学习笔记3———LiveData的简单使用

1.简介:LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。LiveData 只会将更新通知给活跃的观察者。为观.

2020-08-25 23:02:52 96

原创 Android Jetpack应用指南学习笔记2———ViewModel的使用

1.在页面(Activity/Fragment)很简单的情况下,通常我们会将UI交互,数据获取与处理等相关业务逻辑,全部写在页面中,但是在页面复杂的情况下,这样做是不合适的,它不符合“单一责任”原则。页面只应该负责接收用户的交互,以及将数据展示到屏幕上,相关数据应该单独存放和处理。为此,Android为我们提供了ViewModel类,专门用于存放应用程序页面所需的数据。它将页面所需的数据从页面中剥离出来,页面只需要处理用户交互,以及负责展示数据的工作。ViewModel是一个抽象类,其中只有一个方法

2020-08-24 22:31:23 140

原创 Android Jetpack应用指南学习笔记1——Lifecycle的简单使用

AndroidJetPack应用指南学习笔记1——LifeCycle的简单使用1.LifeCycle的引入:在App的build.gradle目录下添加如下依赖:implementation “androidx.lifecycle:lifecycle-extensions:2.2.0”2.创建Service服务继承LifecycleService,因为LifecycleService是Service子类,和Service使用上没什么区别创建服务的观察者:package com.example.

2020-08-23 20:58:19 229

原创 AndroidAES加密2-------解决AES加密在Android中报错问题

1.之前使用AES加密解决了9.0系统手机的问题,由于项目周期和设备原因没有调试6.0及6.0以下的设备,加上使用java的Base64加密,其中Java的Base64加密方法在Android8.0及以上使用才有效,属于过时的方法,在6.0及以下系统的手机直接就崩溃了,于是又找到了一种解决方法,不用考虑系统。2.解决AES加密报错的工具类如下:package com.example.focusimageview.util;import android.util.Base64;import

2020-08-13 00:28:59 139

原创 Android仿微信朋友圈7————实现点赞功能

之前一直有朋友问我点赞怎么实现?今天趁着休息时间整理出来,其实点赞的功能和用户评论差不多,都是显示一个用户列表,只不过评论有评论内容和回复评论功能。实现点赞的思路如下:1.当用户点击点赞按钮后,根据点赞状态来判断和显示:(1)如果此用户的点赞状态是点赞成功,就把此用户加入到点赞列表中,并且点赞状态设置为1,然后请求点赞接口,刷新本地数据;(2)如果此用户的点赞状态是取消点赞,并且循环查询点赞列表,如果此用户在点赞列表中就把此用户从列表中国移除,如果不在点赞列表中就把此用户加入点赞列表,并且把点赞

2020-07-29 00:46:12 588

原创 AndroidAES加密适配9.0

最近在做项目加密,用的是AES,有一个很麻烦的坑,之前加密用的md5和des没有说适配7.0,甚至于Android9.0都不支持SHA1PRNG算法和Crypto,同样的代码在main()方法跑出来的结果和后台的加解密方式一样,这里加密的字段和方法都是一样的,但是跑9.0真机就报错抛异常.先看抛出的异常信息如下:...

2020-07-23 23:51:02 618 2

原创 Android SDK开发1———将完整项目或Module打包成aar

由于公司项目需要把完整App打包成一个aar包,提供给其他合作厂商进行集成内嵌,外部厂商需要有自己的壳工程和相应的Application然后调用我们的aar,一波三折踩了不少坑,今天先说把打成一个独立的SDK.一.aar是什么?*.aar,AAR(Android Arehive)包是一个Android库项目的二进制归档文件,aar包含所有资源,class,xml布局文件以及res资源文件全部包含。注意是全部。jar只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。...

2020-07-20 00:22:06 196

原创 Android关于微信支付一波三折的那些坑

最近做微信和支付宝支付,感觉很蛋疼,支付宝对接很顺利,在开放平台把资料申请好后,App 除了填写AppID和AlipayUtil外其他的不需要,和后台联调调用发起支付接口,调起客户端进行支付,然后根据回调通知前端刷新界面,半小时搞定.然而微信支付虽然接过很多次了,只有2015年那会是自己申请的账号,签名和包那些信息都是亲自填的,除了验证签名话费的时间比较多,其他的都比较顺利,很快就接好了,这次真是刷新了我的认识,本来官网资料杂乱,demo还是很老的版本,下载后运行起来一堆报错,还需要各自ke...

2020-07-16 23:56:54 261

原创 Android仿微信朋友圈6———实现消息提醒功能

之前有朋友问我点赞功能咋实现?其实和评论类似,都是点赞成功后请求点赞接口,然后拼接数据,刷新本地列表.如果点赞成功,把当前用户加入到点赞列表数据中,如果取消点赞就把当前用户从点赞列表移除,然后刷新adapter....

2020-07-14 00:58:17 266

PDFSearch.zip

Android实现手机内PDF文件查找和利用腾讯tbs实现PDF文件预览,适配6.0动态权限和7.0文件共享

2019-10-09

TvRecyclerView.zip

Android实现仿小米TV和泰捷视频焦点放大缩小效果,纯手工代码,注释详细,逻辑清晰简单明了,可扩展性高,小伙伴们如有兴趣可以下载下来看看

2020-09-29

SaveImageAndVideo.zip

Android实现保存图片和视频到系统相册,支持Android 9.0,目前测试华为、联想、小米、魅族都可以保存成功

2020-04-21

AndroidTIM.zip

腾讯IM及时聊天demo,包括消息、通讯录、我的三大模块,功能包括 登录,创建群 、创建单人回话、创建群回话 、发送消息、接受解析消息 、发送信息、创建讨论组、聊天室等

2020-04-09

ExpandTextView.zip

Android实现仿微信朋友圈,包括自定义点赞评论弹框、自定义显示全文与收起 的TextView、点击外部和滑动列表时隐藏输入框和键盘解决方法、评论时输入框和键盘自动定位到内容下面

2019-10-09

Null系统资源文件

解决git报错问题Null系统资源文件 fatal: open /dev/null or dup failed: No such file or directory

2018-08-25

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除