Android
雨痕消失
(*•̀ᴗ•́*)و ̑̑
展开
-
关于安卓弹窗,底部菜单等用动态添加布局的方式实现
说起实现一个弹窗的效果~你会想到什么实现方式呢?用PopupWindow 或AlertDialog 或在布局文件添加一个布局隐藏或者显示等等,实现的方式很多用popupWindow 和AlertDialog很方便,但代码不便于复用,扩展性不好,会出现一些输入焦点的问题。并且样式修改困难。如果直接写在布局文件里,用显示隐藏的方式,还是不便于代码复用。所以我想到了一种思路,动态的添加布局,并且把这整个布局显示隐藏或移除添加以及添加到activity的逻辑封装到一起作为基类。实现类只需要实现弹原创 2021-08-18 17:58:01 · 490 阅读 · 1 评论 -
模拟handler写的一个demo
Looper 类 模拟了loop方法,quit 方法用于退出模拟的死循环package com.yuixu.test2import android.util.Logclass MyLooper { var mThread:Thread companion object{ var threadLocal =ThreadLocal<MyLooper>() fun myLooper():MyLooper{ re原创 2021-06-27 18:48:57 · 200 阅读 · 0 评论 -
Handler 的loop()方法详解
上篇说了loop()方法并不是handler用来取出消息的,那么这篇分析一下loop()的源码看下它到底是干嘛的。个人理解大概是用来等待接收消息的,他会使线程进入休眠状态,等待被唤醒。这里关键的地方就是 MessageQueue的next方法。其中调用了nativePollOnce ,这个方法可以参看上篇提到的其他作者的native层源码分析(具体意思这个是Linux中的一种线程通讯机制,这个方法会让线程进入休眠状态)还有Looper中的Observer。looper中的Observer 是个抽原创 2021-06-27 15:54:17 · 936 阅读 · 0 评论 -
从源码详细分析Handler 原理
终于对handler 下手了????先来看看源代码,要看Handler源码还是要从构造方法入手。 @Deprecated public Handler(@Nullable Callback callback) { this(callback, false); } /** * Use the provided {@link Looper} instead of the default one. * * @param loope原创 2021-06-27 12:32:33 · 332 阅读 · 2 评论 -
android拖拽控件
好久没有机会画画控件,最近画了一个换汤不换药的控价,之前的开关是点击事件,这个响应拖拽。说下我这个控件拖拽的原理,手指按下,判断当前手指位置是否为拖拽元素所处位置,如果是,将控制变量值改为true在onMove 事件中重新计算拖拽元素位置并重绘在其他事件中重新将控制变量值改为false,并且用回调返回当前控件选中值,先上一个效果图,然后源代码走起public class MySeekBar extends View { private int textColor; pr原创 2021-04-11 14:48:09 · 536 阅读 · 0 评论 -
关于socket 两台Android设备上的通信
好久没有看过socket的代码,今天想实现一个两台手机之间互传的功能,本来想用蓝牙,但是想着,蓝牙有距离限制,如果直接用网络通讯。这样就可以远程发送了啊。于是我想起了socket。经过一上午的时间写了一个demo。然而仅仅实现了局域网的链接。从网上查资料,看了很多关于内网穿透的文章。似乎虽然能够查询到本机的外网地址,但是其他设备并不能直接通过这个外网的ip地址访问到这个设备。其中涉及到了一个名词叫做内网穿透。由于我不是做服务器的所以也没太看懂。大概的意思就是外网并不能直接访问内网,需要经过一些端原创 2021-03-20 18:59:41 · 1384 阅读 · 2 评论 -
关于compose的
试着用compose去做这样一个可以进行富文本编辑的项目。compose渲染页面非常的快,像我手机这样装满了图片,打开我实现的相册,没有任何分相册的情况,下滑翻动完全不卡顿。这样的带调色盘的富文本编辑功能也非常好实现,举例来说,由于compose所有的组件都是方法,所以我想做一个下面那种带滑块的条,我只需要在一个Box里面放上另一个Box。另一个Box可以拖动就可以了。再比如编辑的显示页面,完全不需要像以前一样考虑用什么布局,怎么刷新布局中的子控件。而comoose的实现方式就是我的数据是.原创 2021-03-19 17:11:07 · 498 阅读 · 0 评论 -
retrofit2的使用
import android.content.Intent;import android.content.SharedPreferences;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.text.TextUtils;import android.util.Log;import com.alibaba.fastjson.JSON;import com..原创 2021-02-04 16:52:36 · 513 阅读 · 0 评论 -
ViewBinding与MVVM框架
MVVM框架主要的特点就是低耦合,对于不同的view,model可以复用。目前android 的MVVM框架主要是使用 databinding实现双向数据绑定,来降低耦合度。下面是一个我自己总结的使用databinding来实现mvvm框架的简单示例。model类,这个类主要是一些与视图相关的业务逻辑的处理,对于一些需要复用并且实现不同逻辑的model类,可以使用回调的方式来执行不同的...原创 2020-03-24 14:50:46 · 2855 阅读 · 0 评论 -
4)Learning diary for Flutter about android
Today I'll givedatafrom serviceto the ListView.Before that,the data waslocal.To practice mixed development,I'll use native code to complete data requestspublic class HomeActivity extends A...原创 2020-01-07 20:00:39 · 198 阅读 · 0 评论 -
4)Learning diary for Flutter about problem
These days, I troubled bythe problem about Flutter Class not found.Today I seen a examplefrom flutter sdk.I found that creating FlutterView didn't use the Flutter ClassSo, I tried this me...原创 2020-01-07 14:04:23 · 145 阅读 · 0 评论 -
3)Learning diary for flutter about android
Yerstoday,I worte an android program which only has one list viewToday,I'll add feature about load more to the listThe page is implement of statefulWidgetThe class used to updates page state i...原创 2019-12-31 15:40:35 · 151 阅读 · 0 评论 -
关于利用java反射实现,Android 工程插件化的理解。个人认为并不是上下文的注入,而是调用。
最近在研究Android 工程的插件化,也可是说是热更新,让项目插件化,功能模块放到插件工程中,编译为插件apk。已实现在不重新安装开发包的基础上,达到更新项目功能模块的效果。当然也可以用于换肤了很多网上的资料和视频,感觉有些地方还是很误导读者。所以在这里整理一下,关于java反射使Android 项目插件化的原理。实际上是利用了java反射的原理和DexClassLoader 这个类,载...原创 2019-12-11 18:27:02 · 237 阅读 · 0 评论 -
Android OpenGL ES3.0 (1)
\最近研究了一下OpenGL ES3.0,参照了网上很多的示例,在这里总结一部分经验1)数据OpenGL ES3.0 中的3D数据模型是由无数个三角形组成的。例如下面这段数据,就是一个绘制立方体的模型。float数组中每个三个元素代表一个顶点(x,y, z),没三个顶点(九个元素)代表一个三角形。opengles 的数据特点是在-1到1的范围表示整个空间。下面的数据就是用来绘制一个长宽高都...原创 2019-12-04 12:07:44 · 584 阅读 · 0 评论