- 博客(235)
- 资源 (22)
- 收藏
- 关注

原创 Android studio 软件安装过程中遇到的问题
我估计是在安装过程中遇到问题最多的一个人了 ....按照《第一行代码》书中内容,应该建立一个HelloWorld项目,但是刚一建立,就出现一堆红色的错误。第一个问题是“could not find any version that matchse com.android support:appcompat-v7:27.+”或者是“sync errors”Error:(26, 13) Fai
2018-01-14 17:52:04
6000
原创 Dialog动画相关
最近需求一个问题,想要在dialog消失时增加动画,之前如上一个文章中遇到的,但是最后改了实现方式,要求在特定的地方缩放,原来的dialog高度是wrap_content的,这样是无法实现的,因此首先需要将dialog的layout文件从wrap_content,改成match_parent,同时设置最外层布局背景透明。紧接着我们就可以使用动画了,尤其是平移动画,原来dialog是wrap_content的时候,如何平移超过view,就会消失。思路:根据位置计算平移的距离进行平移,同时缩放。
2023-10-18 23:19:54
387
原创 透明度模糊Android实现
但这种实现方式有一个缺点,Fatal Exception: android.renderscript.RSInvalidStateException: Calling RS with no Context active.权衡之下,去掉这个feature了。最近有个需求,需要透明度加模糊,并且无法通过Glide的方式实现。研究后发现有一个第三方库可以实现这个效果。实现效果 可以看到上边的bar实际上是有透明度和模糊的。在activity的onCreate()方法中。
2023-09-18 22:29:08
865
原创 Android 自定义TabLayout
默认的TabLayout是没有花里胡哨的功能的,比如说我们可能希望它有边框,或者有背景颜色。因此就需要更改一些属性,或者在代码中实现。
2022-05-24 09:41:28
1846
原创 DataBinding学习记录
DataBinding的实质其实也是APT技术,DataBinding是MVVM架构中出现的。想要使用DataBinding,首先需要在在build.gradle(app)中加入以下这句话,如下图所示 dataBinding { enabled = true // versio n = 1.1 // 可选,建议最好不加,使用Gradle插件默认的版本 }然后在需要使用DataBinding的布局中通过<data>标签的方式管理布局和
2022-04-09 23:27:40
2769
原创 Some Kotlin libraries attached to this project were compiled with a newer Kotlin终极解决方法有手就会
Some Kotlin libraries attached to this project were compiled with a newer Kotlin compiler and can‘t 报错看了网上的解决方法,都不行,包括删除.gradle重新下载依旧报错记录一下,有好心人也可以告诉我答案
2022-04-09 18:47:52
5876
1
原创 Android屏幕适配
1.Android屏幕适配的原因其实还是因为dp并不能真正的实现像素密度无关2.dp dpi dip px到底是什么像素px 1px=1个像素点 设计师一般以px作为统一的计量单位屏幕像素密度 dpi dpi与屏幕尺寸有关 在同一条件下,屏幕尺寸越小,分辨率越高,像素密度越大dpi = 开根号(宽^2 + 高^2)/屏幕大小屏幕无关像素 dp/dip dp = dpi/160 也就是说dp其实是只和dpi相关的,而为了进行适配,我们需要修改的是dpi,而Android适配也是因为dp
2022-03-21 15:52:28
2442
原创 View绘制流程分析
setContentView()做了什么我们知道在onCreate()方法中setContentView()方法是将xml文件解析到DecorView上,那么DecorView又是什么时候显示在屏幕上的呢?我们都知道activity的生命周期中onResume()做了很多工作,而onResume()的调用如上图所示。在ActivityThread中,handleResumeActivity()方法不光调用了performActivity()方法最终实现对onResume()方法的调用,还进行了以
2022-02-15 10:26:24
1215
原创 Java双亲委派机制在Android的应用
Java的双亲委派机制三层类加载器1.启动类加载器(Bootstrap Class Loader) 这个类加载器负责加载存放在<JAVA_HOME>\lib目录,或者被-Xbootclasspath参数所指定的路径中存放的,而且是Java虚拟机能够 识别的(按照文件名识别,如rt.jar、tools.jar,名字不符合的类库即使放在lib目录中也不会被加载)类 库加载到虚拟机的内存中。启动类加载器无法被Java程序直接引用,用户在编写自定义类加载器时, 如果需要把加载请求委派给引导类加载
2022-01-25 17:04:39
1767
原创 Java 锁
1.volatilevolatile具有可见性和一致性,禁止指令重排序优化,但是无法保证原子性,因为很多操作都不是原子操作(如i++)由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write这六个除了volatile之外,Java还有两个关键字能实现可见性,它们是synchronized和final。而final关键字的可见性是指:被final修饰的字段在构造器中一旦被初始化完 成,并且构造器没有把“this”的引用传递出去(this引用逃
2021-12-27 17:10:10
210
原创 sychronized理解
1..class和.dex文件对于Java而言,编译后生成的是.class文件而对于android而言,.class文件是中间状态,还需要将.class文件通过dex工具变成.dex文件,最终变成.apk文件如一个类Demo,注意一定不要将它写在xx.com.example下,而是直接写在java文件夹下(即不要导入任何包)血的教训,千万不要写入任何路径,否则会像我一样折腾半天Demo类定义如下,里面写了一个foo()的方法,且被synchronized修饰(可以对比一下有无修饰生.
2021-12-27 14:06:35
352
原创 Android进阶之光学习记录——注解与依赖注入框架ButterKnife的尝试
⚠️创建的模块是java模块而非Android Library,如果创建的是后者,则无法使用AbstractProcessor
2021-12-26 22:45:08
1504
原创 Java线程的一点理解
1.线程和进程的区别进程是资源进行分配和调度的基本单位 进程包含线程 进程有自己线程cpu调度的最小单位2.线程的生命周期一个线程被创建变成了new,在获取到除了cpu之外的资源后变成了runnable,在等待检测锁的时候是blocked,在被执行wait() sleep()以及join()等方法后变为waiting以及等待特定的时间时是timed_waiting,终结后变为terminated.理解一下blocked:当一个线程被调用了wait()/join()之类的方..
2021-12-24 16:04:20
607
原创 HashMap原理
1.构造器hashmap有四个构造器(1) HashMap() 如下所示代码 DEFAULT_LOAD_FACTOR = 0.75f /** * Constructs an empty <tt>HashMap</tt> with the default initial capacity * (16) and the default load factor (0.75). */ public HashMap() { ...
2021-12-19 23:03:56
445
原创 Android Studio Build running 时间过长且失败Gradle
错误内容Unable to resolve dependency for ':app:Infolibrary@debugAndroidTest/compileClasspath':Could not resolve androidx.core:core-ktx:1.3.0....1.androidx build 失败implementation 'androidx.core:core-ktx:1.3.0'implementation 'androidx.appcompat:appc.
2021-05-05 17:42:48
1215
4
原创 ListPreference动态设置选项
在实际中,我们通常会遇到动态设置选项的问题,而不想在xml文件中写相关内容,可以通过一下方式实现。在找到当前的ListPreference后,绑定数据和preference private void doDataBind(ListPreference preference,List<String> list){ CharSequence mentries[] = new String[list.size()]; CharSequence ment.
2021-02-05 11:32:27
945
原创 Preference复制文本功能实现 android
如使用android定义的Preference,实现显示内容的复制,可通过点击Preference,触发onclick实现(和其它控件如按钮等点击类似,在onclick等内部调用复制函数),最后实现复制功能的函数 public void copyData(Preference preference){ ClipboardManager cm = (ClipboardManager)getActivity().getSystemService(getActivity()..
2021-02-05 10:34:18
261
原创 责任链模式学习记录
//责任链模式 为请求创建一个接收者对象的链 确保对象总是会被处理 如Android中的事件分发机制,OKHTTP中的网络处理 在以下的例子中,为了构建责任链模式,还使用到了建造者模式public class ChainOfResponsibility { //责任链模式 为请求创建一个接收者对象的链 //首先是访问频率其次是登录 public static void main(String[] args) { Request request = ne.
2020-10-09 09:31:54
152
原创 观察者模式学习记录
//观察者模式//定义了对象之间的一对多以来,让多个观察者对象舰艇某一个主题对象,党主题对象发生变化时,它的所有依赖者都会收到通知并更新//如Android中的ListView RecycleView点击事件//优点 1.符合开闭原则 2.可以在运行时就建立对象之间的关系import java.util.ArrayList;import java.util.List;public class Observe { //观察者模式 //定义了对象之间的一对多以来...
2020-10-08 16:39:46
158
2
原创 模板模式学习记录
//模板方法模式//定义一个操作的算法骨架,而将一些步骤延迟到子类中 使得子类可以不改变一个算法的结构就可重定义该算法的某些特定步骤public class Model { //模板方法模式 //定义一个操作的算法骨架,而将一些步骤延迟到子类中 使得子类可以不改变一个算法的结构就可重定义该算法的某些特定步骤 public static void main(String[] args) { AbstractClass abstractClass = n..
2020-10-08 14:53:15
131
原创 策略模式学习记录
策略模式 定义了算法族 分别封装起来 让它们之间可以互相替换 此模式的变化独立于算法的使用者public class Strategy { //策略模式 定义了算法族 分别封装起来 让它们之间可以互相替换 此模式的变化独立于算法的使用者 public static void main(String[] args) { Zombie zombie = new NormalZombie(); zombie.display(); ..
2020-10-06 17:09:51
117
原创 装饰者模式学习记录
装饰者应用场景 扩展一个类的功能或给一个类添加附加职责优点 1.不改变原有对象的情况下给一个对象扩展功能2.使用不同的组合可以实现不同的效果3.符合开闭原则 注意 在新的装饰器中要调用原来的方法 否则是不正确的public class Decorator { //装饰者应用场景 扩展一个类的功能或给一个类添加附加职责 /* 优点 1.不改变原有对象的情况下给一个对象扩展功能 2.使用不同的组合可以实现不同的效果 ..
2020-10-06 15:27:06
105
原创 享元模式学习记录
享元模式//运用共享技术有效地支持大量细粒度的对象//优点:如果系统有大量类似的对象,可以节省大量的内存及CPU资源 源码 String Integer Long 不可变对象import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class XiangYuan { public static void main(String[] args) { TreeNode no.
2020-09-22 16:43:34
113
原创 原型模式学习记录
指原型实例指定创建对象的种类,并且通过拷贝这些原型创建心的对象,最常见的就是深拷贝和浅拷贝,其中浅拷贝是只能拷贝基本类型和String类型的值和其它类型的地址,用这种方式拷贝的结果是原来的对象发生改变,当前对象也会有相应的改变。如果不希望当年的基本类型值被改变,可以通过final修饰,如代码所示。运行结果如下public class BuilderUpdate { public static void main(String[] args) throws CloneNotSupport..
2020-09-22 10:23:54
124
原创 建造者模式学习
课程地址建造者的流程如下,首先是有商品和相应的接口,接口中是各种抽象的方法,然后有builder负责实现接口中的各种方法,在由一个引导类负责实现一个商品的构建并完成和客户端的交互。public class BuilderDemo { public static void main(String[] args) { DefaultProductBuilder defaultProductBuilder = new DefaultProductBuilder();
2020-09-21 09:54:30
135
原创 单例模式详解——参考B站课程
课程地址单例模式是为了确保只有一个实例的存在,从而防止多个实例存在会对程序造成干扰或攻击。1.懒汉模式public class LazySingleTon { private static LazySingleTon singleTon; private LazySingleTon(){} public synchronized static LazySingleTon getInstance(){ if(singleTon == null)
2020-09-20 10:01:44
171
原创 HashMap学习记录
HashMap继承AbstractMap,实现克隆,序列化接口public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { /** * The default initial capacity - MUST be a power of two. */ static final int
2020-09-18 10:15:34
100
原创 HandlerThread源码学习记录
HandlerThread 实质上是一个带有Looper的handler,我们在使用的时候通过mThread = new HandlerThread("handler_thread");需要启动handlerThread的时候mThread.start();代码很短 HandlerThread继承了Thread,也就是说可以通过HandlerThread的方式开启一个线程,当.执行start()方法后,会在新开启的线程中直接执行run()函数,其中run函数中首先通过Loppe.
2020-09-08 19:44:54
151
原创 Android消息机制总结 Handler Looper MessageQueue Message
Handler Looper MessageQueue 以及Message是一个整体。如果线程之间需要发送消息,最常见的方式就是使用Handler。如子线程想要给主线程发送消息,则主线程中创建Handler 并重写handleMessage()的方法,子线程中通过sendMessage的方法传递消息。如果主线程想要给子线程发送消息,则需要在子线程中创建Looper,(Looper.prepare() ...Looper.loop())的方式完成。主线程中自带Looper,不需要我们手动创建。一个线程
2020-09-06 16:22:50
180
原创 Object类学习记录
Object类是其它类的超类,有很多方法如wait,notify,equals,hashcode等等,其中大部分方法都是native的在equals方法中,比较的是==,而在Integer或者是String类中,重写了equals方法,比较的是内容是否相同 public boolean equals(Object obj) { return (this == obj); } public final native Class<?> getClas
2020-09-03 20:02:59
128
原创 String类 StringBuilder StringBuffer源码
String类被final修饰 实现了CharSequence的接口,有被final修饰的char型数组,因此是不可变的public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; .
2020-09-03 19:40:29
146
原创 Integer源码阅读记录
1.静态内部类IntegerCacheprivate static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h.
2020-09-03 16:50:59
118
原创 csp 201912-1 报数java
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int i = 0; int count = 0; int res[] = new in...
2020-09-01 11:00:17
168
com.guo.android_extend:android-extend:1.0.6
2018-12-13
讯飞语音识别android studio最简单的例子
2018-10-09
An empirical study of natural noise management in group recommendation systems
2018-04-08
GroRec:集成社交,移动和大数据技术的以群体为中心的智能系统pdf学习
2018-03-30
GroRec:集成社交,移动和大数据技术的以群体为中心的智能系统
2018-03-30
A generative model for group recommendation
2018-03-22
Localization of emergency acoustic sources by micro aerial vehicles
2018-03-16
使用LSTM递归神经网络架构的紧急事件预测 PPT
2018-03-09
AES ECB模式的JAVA实现
2017-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人