自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 MeowAI - 识别你的群晖图片场景并打上标签的工具

通过 Synology API 获取图片缩略图,使用离线 yolov5 模型识别并对图片添加标签。

2023-03-27 16:23:10 728 1

原创 Java/Kotlin 如何反射获得实例

Java/Kotlin 如何反射获得实例大家都知道反射是什么,就是运行时操作类,调用方法。今天我遇到一个问题,如何将java.class的field转化为一个我想要的object?我都已kotlin举例子class A{ val q1 : User = User("1") val q2 : User = User("2") val q3 : User = User("3")}val a = A()//我想将q1,q2,q3加到一个list里面val list = mutableL

2021-02-01 17:56:55 451

原创 ViewPager动态初始化最优方案

ViewPager动态初始化最优方案前景默认初始化3个tab, 但是当联网获取到数据之后, 需要再新增一个tab,而且tab的顺序需要调整.源码分析定义变量缓存所需数据//缓存fragmentprivate val fragments = mutableMapOf<Tab, Fragment>()//缓存fragment的ItemIdprivate val keyIdMap = mutableMapOf<Tab, Int>()//缓存tab的上一次的排序位置pri

2020-10-23 19:11:40 576

原创 Fragment的getActivity怎么初始化的

Fragment的getActivity怎么初始化的很好奇什么时候能够拿到activity, 所以今天分析一下源码.mHost@Nullablefinal public FragmentActivity getActivity() { return mHost == null ? null : (FragmentActivity) mHost.getActivity();}很明显, 这里是通过mHost拿到的activity, 所以我们看mHost在哪里初始化的.直接找mHost的赋

2020-10-10 12:17:56 217

原创 Glide 是如何运作的,这篇3分钟看懂

Glide 是如何运作的,这篇3分钟看懂流程with初始化glide,线程池(Engine)[默认使用GlideExecutor, 根据cpu计算线程数量,最小4个 ]监听生命周期和网络load 设置资源地址-资源的属性into 为target设置request, 加入线程池开始任务如何回调into方法into( glideContext.buildImageViewTarget(view, transcodeClass), /*targetLis

2020-09-30 14:12:32 124

原创 Android Fragment的add,show,hide一定要一起用吗?

Fragment的add,show,hide一定要一起用吗?问题两个fragment, fragmentTest1和fragmentTest2, 初始化fragmentTest1, 代码如下:supportFragmentManager.beginTransaction() .add(R.id.content, fragmentTest1, FragmentTest1::class.java.simpleName) .commit()然后在一个点击事件跳转到fragmentTest

2020-09-29 13:33:48 756

原创 Android LiveData 为什么会初始化?

LiveData 为什么会初始化?问题:为什么有的时候在进入一些页面的时候,livedata.observe{ 这里的代码会执行 }?LiveData源码解析setValue@MainThread protected void setValue(T value) { assertMainThread("setValue"); mVersion++; //注意这个 mData = value; dispatchingVa

2020-09-25 17:34:35 702

原创 Android 尝试适配广角镜头的方案

广角镜头适配基于Camera2 API, 获取设备相机信息, 判断相机是否广角//获取镜头数量, 略//通过物理尺寸, 对焦距离, 算出FOV(Field of view), 相机水平弧度, 垂直弧度val size = characteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE)val focalLens1 = characteristics.get(CameraCharacteristics.LENS_INFO_A

2020-05-26 16:52:14 3938 4

原创 Android View的Scale属性不会改变宽高

View的Scale属性不会改变宽高今天算是遇到一个问题, 一个View的scale改变之后, 我怎么去计算view里面的位置呢, 比如画一个点在他的某个点上, x和y需要相应进行scale换算吗?看完上面的内容, 很明显, scale不会改变view的宽高, 那么到底该如何进行下一步呢?答案就是:其实就跟当他没有scale的时候计算好x和y值就好了, scale属性只是说看起来缩小了, 实际内容还是在原来宽高布局的.记录一下, 可以看看源码, 如何实现的. /** * Set

2020-05-22 20:28:38 3459

原创 酷安市场<WanAndroid> 客户端1.7版

WanAndroid前言一款含有有丰富Android开发文章的App,内容每天都会更新。 原网站 http://www.wanandroid.com ,数据内容源至hongyang大神的网址,我只是将网址转化为App方便大家学习,侵删。接口地址: http://www.wanandroid.com/blog/show/2截图下载地址Wa...

2018-08-20 15:41:00 638

原创 摊牌了,抄过来最全的计算机网络面试知识笔记

NetWork 本文鉴于个人搜集资料文章总结所得,若有错误请尽快联系我!NetWork计算机网络体系结构, 可以分为四层也可以是7层:应用层运输层网络层数据链路层物理层IP(网络层)IP数据报格式IP地址子网掩码TCP/IP(运输层)什么是TCP/IPTCP首部格式:作用:三次握手慢启动和拥塞避免慢启动思路拥塞避免快重传 和 快...

2018-08-20 15:34:50 931

原创 leetcode面试算法题

数组旋转数组(向右移k位, 头条)思路: 1 2 3 4 5 6 7  如果k = 3 的话, 会变成 5 6 7 1 2 3 4  1 2 3 4 5 6 7  middle = 7 - 3 = 4,分为左边 4个数字,右边 3个数字  4 3 2 1 7 6 5  分别把左右reverse 一下  5 6 7 1 2 3 4  把总数组reverse 一下就会得到答案...

2018-08-20 15:32:38 1430

原创 TVideoPlayer[基于MediaPlayer封装的视频播放器,重力感应全屏,手势调节,可自定义播放器]

TVideoPlayer特性用MediaPlayer + SurfaceView封装,可自定义MediaPlayer重力感应切换全屏手势滑动调节播放进度、亮度、声音采用Glide绑定生命周期方式(无需在Activity/Fragment回调方法)实时监测网络状态并给予提示使用Gradleimplementation 'com.github.thatnight:...

2018-05-28 11:56:08 803

原创 Android 上传Jcenter GBK 出坑啦

可能以前用的是英文注释所以没有这样的编码问题这次找了很多搜索结果依旧没有出坑,现在只需复制下面的代码到你的Library.build.gradle文件下随便加载哪里都可以tasks.withType(Javadoc) { options.addStringOption(&quot;Xdoclint:none&quot;, &quot;-quiet&quot;) options.addStringOption(...

2018-05-28 11:46:04 274

原创 JVM快速阅读笔记

JVM这篇笔记写给自己在实习之前看的,有什么不对地方请广而告知,我会持续更新修改。 本片文章字数较多,适合快速浏览,有不详细的请另行百度运行时数据区域程序计数器: 指示执行某条指令虚拟机栈(栈): 每个栈帧对应一个方法包括局部变量表、操作数栈、运行时的常量池、本地方法栈:为使用到的本地操作系统方法服务java堆:线程共享的一块内存区域,对象实例和数组都在这

2018-01-21 22:00:30 276

原创 Android 一行代码实现炫酷Button

前言以前有接触过这个,不过也只是看到github上面的,看起来很炫酷,最近有看动画这一方面,所以突然兴致大发, 简简单单实现一个自定义的View, 纯动画, 没有什么需要计算的地方.效果图使用方法在app/build.gradle中添加下面一行代码: dependencies { compile 'com.example.thatnight:animbutton:1.5

2017-09-19 19:38:03 1688 1

原创 Android Looper、Handler与Message邂逅

前言太久没更新会让大家觉得我是个很懒的人, 这也一直困扰着我, 学不到东西,以后怎么找工作啊, 不说了,很快就要找实习了,赶紧备些干货.Looper每个线程都只可以有一个LooperLooper无非就是先Looper.prepare(),再Looper.loop()private static void prepare(boolean quitAllowed) { if (sThreadLo

2017-09-16 21:19:22 258

原创 Android 如何获取View的高宽、坐标

前言之前在做动画的时候, 想要获取一下button的坐标的时候, 直接在onCreate里调用button的getX(),getY()方法, 但是返回的结果是0, 后来上网找到了一些方法, 以此谨记.view.post(Runnable)我们调用的这个post方法是在view测量完之后, 所以才会获取的到mBtn.post(new Runnable() { @Override

2017-05-10 22:56:30 563

原创 Android ViewPager 小圆点 + 无限循环 + 动态滑动

前言最近的一个项目需要用到这种效果, 所以今天我们来实现这个ViewPager+小圆点+无限循环,这种效果可以用来作首页的广告啊, 各种显示图片的地方都就可以.ViewPager.OnPageChangeListener我们知道ViewPager有一个方法是经常用到的, 就是 onPageChangeListener(…) ,这个方法是用来监听Viewpager滑动的, 所以我们要加小圆点就需要自

2017-05-10 01:09:31 4114 5

原创 Android ScrollView Button的显示隐藏

前言之前工作室招新的项目中有用到, 忘记写下来了, 这个东西网上找到的资料不是很多, 所以趁现在记下来,方便以后查阅.NestedScrollView自定义一个View, 别担心, 不会很复杂. public class NestedScrollView extends ScrollView { private IOnNestedScrollListener mIOnNestedSc

2017-05-10 01:08:59 1320

原创 Android 分组ListView+索引条

前言之前没有实现过这样的功能,最近刚好在做通讯方面的项目, 所以联系人这块需要一个分组和索引的功能, 今天我们来一起学习.分组ListView实现的方法有两种:每一个ItemView都有一个Header, 通过数据俩控制其显示或隐藏使用不同类型的View.我这里用了一个巧妙的方法.代码:Adapter可以看到这里实现了SectionIndexer接口, 这个接口用来控制ListView的分组的,

2017-05-05 23:53:11 2267

原创 Android AsyncTask简介

前言之前一直都在使用Handler+Thread的方法来处理网络连接和一些更新UI的处理,今天看到了一些源码是AsyncTask的使用,看得不是很明白,所以今天写这个笔记。基本知识AsyncTask简单的说是Handler+Thread的简单封装,所以使用起来十分的简单快捷,并且过程可以控制。AsyncTask的使用我们需要创建一个类继承AsyncTask< Params,Progress,Res

2017-05-04 22:14:19 357

原创 Android Button的Selector+Shape

前言我之前一直是分别写了两个Button的shape之后,再在selector中分别调用这两个背景, 感觉这样十分费劲, 所以今天我们来实现这个selector+shapeSelector<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"

2017-05-04 22:09:09 336

原创 Android Edittext 的 回车监听

前言之前在做一些有Edittext的项目的时候, 出现了输入法按回车想要实现点击按钮的事件,于是去给edittext设置一个onKey监听器,发现不管用, 结果试了很多方法, 下面是解决方法.imeOptionsactionNone: 默认回车键actionGo : 回车键变成 “前往”actionSearch : 搜索actionSend : 发送actionNext : 下一个act

2017-05-04 22:07:49 1797

原创 Android 退出其他Activity

相对两个Activity在两个Activity中的其中一个想要关闭另外一个Activity的话,方法很简单, 如下:先在其中一个Activity中定义一个静态变量public class AActivity extends Activity{ public static AActivity mInstance=null; ...onCreate(...){ mInsta

2017-05-04 22:05:50 323

原创 Java 设计模式——单例模式详解

前言一直在学习Android, 但是都总觉得是在造轮子, 所以还是得把java学深刻, 不然很多线程不安全的东西就会出现.单例模式饿汉式单例式所谓饿汉就是在程序启动或单例模式类被加载的时候, 单例模式实例就已经被创建public class Singleton{ private static Singleton singleton = new Singleton(); private

2017-05-02 23:26:28 636

原创 Android IPC机制-小试牛刀

前言觉得自己已经大二下学期了, Android方面的知识仍然是停滞不前,明年就要去找实习了,感觉十分的虚,项目也做得差差不多,总感觉自己在做重复的东西,学到的东西不是很多,所以最近买了本《安卓开发艺术》,据说这本书是进阶用的,所以我打算研读这本书,这本书里的知识基本是面试所问的基础知识。简介IPC:Inter-Process Communication,简称:进程间的通信。进程和线程进程:一个执行

2017-04-17 23:24:37 609

原创 Android 蓝牙五子棋[可人机对战]——完整篇

前言我之前做了个人机对战的五子棋, AI算法很垃圾, 然后各种逻辑很糟糕, 已经很久没有维护了, 今天看了篇文章, 是用了蓝牙和Wifi的五子棋对战, 我觉得很有意思, 毕竟自己没做过蓝牙连接这方面的项目, 然后我就把以前做的五子棋搬了出来.蓝牙的基础知识我在前面就有写过一篇比较详细的文章, 兄弟们可以到前面看一看, Android 蓝牙五子棋[可人机对战] —— 蓝牙通信篇项目解析文件结构人机

2017-04-07 15:38:26 5075 1

原创 Android 蓝牙五子棋[可人机对战] —— 蓝牙通信篇

前言我之前做了个人机对战的五子棋, AI算法很垃圾, 然后各种逻辑很糟糕, 已经很久没有维护了, 今天看了篇文章, 是用了蓝牙和Wifi的五子棋对战, 我觉得很有意思, 毕竟自己没做过蓝牙连接这方面的项目, 然后我就把以前做的五子棋搬了出来.蓝牙基础知识官方知识:设置蓝牙、查找局部区域内的配对设备或可用设备、连接设备,以及在设备之间传输数据。设置权限权限是一定要设置的,不然根本无法使用,在Mani

2017-03-31 15:27:38 4984 2

原创 Android Retrofit+Rxjava+MVP三大框架集成男人帮APP

前言相信大家都有听说过这三大框架吧,这是最近很火的框架Retrofit的详解主要参考于 Retrofit2.0使用详解retrofit是基于okhttp的封装工具类,功能十分丰富.我能力还是有限,在这里先说下它的使用吧!简单使用添加Gradle依赖项compile 'com.squareup.retrofit2:retrofit:2.1.0'创建Api接口 作为一个get请求的url

2017-03-28 20:56:25 3667

原创 Android IPC机制-AIDL详解

什么是AIDL?官方解释:AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码是一项繁琐的工作,因此 An

2017-03-24 22:36:45 573

原创 [Android四大组件] ContentProvider 内容提供器

ContentProvider 内容提供器什么是内容提供器官方解释:A content provider manages access to a central repository of data. A provider is part of an Android application, which often provides its own UI for working with the

2017-03-23 22:12:20 517

原创 [Android四大组件] Activity 详解

Activity 的生命周期详解首先直接上图,如下是生命周期图,俗话说看图易懂之。管理Activity#### Activity三种状态 #### 继续 Activity位于前台,称作“运行中”。#### 暂停 另一个Activity置于前台,此Activity失去焦点(如果内存不够的话也会被销毁)。#### 停止 此Activity完全被遮盖,已停止的Activity也会处于活动状

2017-03-21 20:02:15 320

原创 [Android四大组件] Broadcast Receiver 广播

BroadCast Receiver什么是BroadCastReceiver官方解释: Android apps can send or receive broadcast messages from the Android system and other Android apps, similar to the publish-subscribe design pattern. These b

2017-03-21 17:39:02 599

原创 [Android四大组件] Service详解,你不知道的都在这里

Service 服务什么是服务官方的解释: Service 就是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件. 通俗易懂: 也就是厨房里默默工作的厨师们 . 服务的生命周期:服务基本用法首先新建一个DemoService继承Service, 并重写父类的onCreate()、onStartCommand()和 onDestroy()方法 , 代码如下 : public clas

2017-03-21 12:47:37 449

转载 Android ViewPager + Fragment懒加载

ViewPager + Fragment懒加载就是对于很多的viewpager+fragment而言,viewpager每次都会预加载很多个fragment,若是fragment内数据操作十分复杂和耗时的话,就会导致大量的浪费内存问题。所以我们先编写一个BaseFragment,以方便作为基类,之后的子类就容易写了.主要是知道了Fragment源码里面有一个setUserVisibleHint

2017-03-19 19:35:30 807

原创 Android studio 断点调试

 简单调试  step over(单步跳过):在断点下,一行一行地走 step into(单步跳入): 当遇见方法时,跳到方法里面,需要注意如果是类库中的方法,则不会进入方法内部。 force step into(强制单步跳入):进入调用的方法,不管是什么方法,都会跳入该方法内部,比较适合读源码 step out: 如果有断点,则到下个断点,若无断点,并且在调用的方法里,则跳...

2016-10-31 01:14:06 9780

原创 Android 自定义TopBar的复用

自定义TopBar的复用从来没发过关于android的技术文档,其实自己最近一个月都在学习java,但是感觉学java不学界面编程,没啥意思,所以傻傻的学了下AWT编程,结果发现这什么玩意啊,浪费青春,现在哪还有用java做pc端的呀,不说废话,赶紧学习android,不然这个月又白忙活了。我做得这么难看,相信你做得比我好。 /res/value

2016-07-19 22:02:22 1724

原创 Java JDBC的基本知识

JDBC Java数据库连接,提供了一种与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作 JDBC驱动分类 JDBC-ODBC桥驱动 ODBC是由微软提供的编程接口,JDBC也是模仿了ODBC的设计 JDBC-本地驱动 直接使用各个数据库生产商提供的JDBC驱动程序,因为只能应用在特定的数据库上,会丧失程序的可移植性,...

2016-07-19 17:16:27 63695 6

原创 Java I/O流

I/O流 File类——创建或删除文件等操作 初始化:File f=new File("d:\\test.txt");  反斜杠可用File.separator常量代替,会根据不同环境而选择 创建:f.creatNewFile();   需要try catch处理异常 删除:f.delete();  最好用 f.exists()判断是否存在文件 文件夹:f.mk...

2016-07-18 15:59:04 1300

Android Tweak 仿 swift-tweak, 动态调试代码

Android Tweak是一个可以动态改变某些本地存储的值, 做到内部功能开启或关闭, 还可以不重新编译就能改变值

2020-05-26

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

TA关注的人

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