自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 从小米14安装不上应用说起【适配64位】

ABI是Application Binary Interface(应用程序二进制接口)的缩写,在Android中,它指的是Android操作系统与设备硬件供应商提供的库之间的接口。好了,回归到正题,就要针对项目中这种情况处理so库了,因为这个老项目是从其他项目演变过来的,用不到这些so库,所以我的解决办法就是全部删除掉(当然要对项目中的源代码进行处理),再进行打包处理。针对64位做适配,一般都是适配so库,一般来说,如果你的项目中没有使用到so库或者C,C++代码,都是支持64位的。

2023-11-21 17:01:34 10888 2

原创 关于PullToRefreshView下拉刷新失效问题

昨天,突然一个问题丢在了我的头上,用户反馈说某某界面下拉刷新不好使啊,怎么回事。

2023-04-26 16:46:24 1135

原创 Android 实现单指滑动、双指缩放照片

Android实现放大缩小

2023-04-21 17:47:44 2873 11

原创 如何修复 Android aar 项目中的“java.lang.NoClassDefFoundError”的错误

自己玩的很开心,结果打包成aar引入到老项目里时就出了问题。

2023-03-16 10:30:17 1006

原创 踩坑记录-设置EditText不可编辑可点击的一些问题

当我设置editText不可编辑可点击的时候出现了一些问题

2022-12-06 16:19:01 1706

原创 常见的设计模式(一)单例和工厂设计模式

大家都在用设计模式,什么是设计模式呢?其实,设计模式是一种代码的写法,再说好听一点就是一种对问题的解决方案,本质是还是要落在代码的实现上。

2022-09-29 16:59:58 362

原创 出现 unable to access xxxxxxxx SSL certificate problem的解决方案

解决方案很简单,关闭SSL验证即可。执行这个命令就好了。

2022-09-16 11:41:31 1301

原创 同步项目时,出现cvc-complex-type.2.4.a: 发现了以元素xxxxxx开头的无效内容。应以 xxxxx 之一开头的问题解决方案

cvc-complex-type.2.4.a: 发现了以元素 'base-extension' 开头的无效内容。应以 '{codename, tag}' 之一开头。

2022-09-08 10:30:07 16117 1

原创 AMS 、PMS服务探索

在上篇Zygote进程探索我们说到zygote进程fork出了SystemServer进程,SystemServer进程又开启了AMS、PMS等重要服务。

2022-06-26 23:23:58 834

原创 Zygote进程探索

说到Zygote进程,就不可避免的提到init进程

2022-06-08 22:35:13 653 3

原创 Handler源码分析(二)

一、前言上篇Handler源码分析说到为什么looper死循环不会导致主线程ANR,原因就在于Android系统是一个以事件作为驱动的系统,当没有事件时界面就应该处于静态状态,深层的原因就是Handler在调用message.next()时也调用了nativePollOnce()方法用于等待下一条消息到达。然后在添加消息到队列时,也会调用native static void nativeWake(long)唤醒线程继续处理消息。上述所说的阻塞和唤醒都发生在native代码中。native 会使用epol

2022-05-25 16:58:38 242

原创 OkHttp源码分析(二)

前面我们提到了OkHttp整体的流程,从真正的请求发出者RealCall去调用同步或者异步方法,完成网络请求。对整体流程不清楚的同学可以点击这个链接OkHttP源码分析(一)直达哦。通过前面的分析我们也知道,调用了同步或异步方法并不会立即去执行网络请求,而是会经过分发器的再一步处理,才会执行。接下来我们就去源码里看看吧。直接看同步方法的调用。override fun execute(): Response { check(executed.compareAndSet(false, true)

2021-08-02 13:32:43 117

原创 OkHttp源码分析(一)

OkHttp的简单使用众所周知,讲解一个框架的原理之前都需要知道这个框架如何使用的,都不知道怎么使用的话,直接去分析原理的话,就显得有点头重脚轻了。OkHttp很庞大,当然一篇文章是说不清楚的。哈哈哈哈哈,废话不多说啊,我们先看看简单的使用吧。val client = OkHttpClient.Builder() .connectTimeout(1000, TimeUnit.MILLISECONDS) .callTimeout(2000, TimeUnit

2021-07-25 17:11:16 298 2

原创 Android 事件分发机制分析

Android 事件分发机制分析一、引子先来看一段代码。findViewById<TextView>(R.id.tvHellWorld).setOnClickListener { Log.d("TAG", "onCreate: 3333333")}很熟悉的一个点击事件,对吧,我们在对TextView点击之后,就会打印出日志。那大家有没有想过,我们的点击操作是怎么一层层到我们这个点击回调呢?这就是我们接下来要聊的东西了。搬好小板凳,一起来看看吧。二、缘起-事件说到这个,就

2021-06-29 16:10:52 239 1

原创 Handler 源码分析

一、Handle的简单使用废话不多说,先来看看Handler的简单使用。val mHandler = Handler(object : Callback() { fun handleMessage(msg: Message?): Boolean { //处理消息 return false }})以上是处理消息的过程,比如网络返回之后需要更新UI之类的操作可以在Handler的handleMessage回调中完成。mHandler.message =

2021-06-17 17:07:20 426

原创 Room的踩坑记录

一、建立实体类踩坑记录1、实体类字段问题由于我用的是kotlin建立的实体类,kotlin对于空指针的检查很严格,所以,对于一些可以为空的数据表字段需要在实体类属性后面加上 ? 表示可以为空,不能为空的字段就不加?,当然使用Java的时候,就没有这些问题了。@Entity(tableName = "Test", indices = [Index( "TEST_ID", unique = true)])data class Test( @ColumnInfo(name = "TEST_ID"

2021-05-20 11:00:41 2215 4

原创 TabLayout踩坑记录-addOnTabSelectedListener()

接到一个需求,当recycleView的标题栏吸顶了,点击tablayout可以回到顶部,没啥大问题,不就是一个点击事件嘛。但是一波三折啊。由于对Tablayout的使用不熟悉走了很多弯路,但是一些常规的使用和其他的控件没有什么区别嘛。addOnTabSelectedListener 用这个注册点击选中监听事件,在回调方法onTabSelected()里处理选中之后的操作。由于当前tab是选中状态,再次点击时,并不会回调onTabSelected()方法,我当时脑子一热没有去想Google是不是考虑过这

2021-03-14 14:02:32 3647 5

原创 ViewPager+Fragment 预加载和延迟加载问题

项目中遇到了ViewPager+Fragment,特此记录一下踩过的坑。预加载的一些问题之前都不知道ViewPager有一个特殊的功能,预加载。会预加载临近的界面,让滑动更加流畅。ViewPager还提供一个方法来设置预加载的界面数。 public void setOffscreenPageLimit(int limit) { if (limit < DEFAULT_OFFSCREEN_PAGES) { Log.w(TAG, "Requested offs

2021-02-18 17:46:13 2662 6

原创 ScrollerView嵌套RecyclerView布局界面自动滑动(控件焦点抢占)

ScrollerView嵌套RecyclerView布局界面自动滑动(控件焦点抢占)​ 最近在项目中遇到这个问题,每次刷新UI时,就会自动滑动到底部。起初以为是底部布局中的焦点优先于上面的布局,然后设置了android:focusable="false"这个属性,再次测试还是一样的会自动滑动。​ 最后是需要使用android:descendantFocusability="blocksDescendants"这个属性来设置。​ 解决办法:修改ScrollView中的最外层子布局的焦点,设置:

2021-02-07 11:22:56 570 1

原创 在Android6.0以上获取WiFi列表(获取WiFi列表为空)的问题

在Android6.0以上获取WiFi列表(获取WiFi列表为空)的问题拿着代码走吧。先声明权限 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="and

2020-12-24 20:33:43 1025 7

原创 引导页的简易制作方法

引导页的简易制作方法1、相关准备需要准备若干图片熟悉viewPager2的使用熟悉RadioGroup的使用导入依赖库 implementation 'androidx.viewpager2:viewpager2:1.0.0' implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'本例使用

2020-12-22 15:08:58 1254

原创 ViewPager的一个小例子

早就听说有这个ViewPager控件,项目要中使用的也多,ViewPager也是更新到了ViewPager2。但是我一直没有使用过,现在记录一下简单的使用方法。它的使用和RecycleView、ListView的使用大同小异。也需要适配器和监听事件。相信用过这些控件的同学一定不陌生。上代码布局文件activity_main<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.Constra

2020-11-30 11:58:46 176

原创 模拟系统输入法输入(onKeyDown方法的使用)

在工作中碰到前辈写的代码,发现按下按钮就可以直接在EditText上显示出来,没有任何的赋值操作。百思不得其解,最后询问公司同事,发现这样我没有见过的操作。先来一个布局文件(activity_main.xml):<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res

2020-11-09 22:23:28 621

原创 Intent不能传递较大数据的原因

这个问题之前遇到过,但是当时没有多想,网上直接查了资料用了代替方法传递数据了。至于为什么不能传递较大的数据,直到今天开始阅读官方文档才了解。还是得多阅读官方文档,很多东西官方都给出解释了我这里就贴出官方文档的解释了。Binder 事务缓冲区的大小固定有限,目前为 1MB,由进程中正在处理的所有事务共享。由于此限制是进程级别而不是 Activity 级别的限制,因此这些事务包括应用中的所有 binder 事务,例如 onSaveInstanceState,startActivity 以及与系统的任何

2020-09-04 10:26:45 833

原创 startActivityForResult()方法的使用

我好像很少使用这个方法,特此记录一下。长时间不用就会忘记使用的过程。在MainActivity的布局文件中添加一个Button和一个TextView。Button用来跳转界面,TextView用来展示结果。再创建一个Activity用于结果的返回。MainAvtivityclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onC

2020-09-02 15:41:37 1553

原创 出现The style on this component requires your app theme to be Theme.MaterialComponents错误

我碰到这样的问题是由于我是用MaterialCardView时出现的,可能使用使用其他的Material库的控件时,也会出现这样的错误提示。这个错误就是说当前组件的主题是需要 Theme.MaterialComponents这样的主题。那么如何修改呢???只需要在style.xml文件中,修改一下主题就可以了。 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.MaterialCompon

2020-08-09 13:04:05 3624 1

原创 Android FaceBook sdk 登录接入

最近鼓捣一些外面的东西,学习了下FaceBook sdk的接入过程。当然会用到一些工具才可以进行这些操作的,这里就不多说了。大家可以看看这个Android 版 Facebook 登录官方文档,跟着步骤一步步来就可以了,当然其中也会有很多容易出错的地方。慢慢解决就就可以了。首先你得有一个facebook的账号,这是必须的。怎么注册,这里就不再演示了。懂得都懂,不懂的也没办法。有了账号之后是要注册成为开发者,新建一个应用,得到应用id,这些都是准备工作。注册好了,界面如下。这个应用编号你们可以使用的,但是

2020-07-16 21:45:19 1629

原创 Android中的序列化

在平常的需求中,可能会传递对象数据。这时候就会用到Serializable和Parcelable两种方式来把对象进行序列化然后传输。对序列化的理解可以参考这篇文章Java序列化理解与总结。话不多说,看看代码怎么实现的吧。Serializable方式:Java实现Serializable接口,由于Serializable接口只是一个标识接口,所以就没有相应的实现方法。jvm会自动识别并进行序列化。首先编写一个Book类实现Serializable接口。public class Book implem

2020-05-18 20:30:32 148

原创 出现Cleartext HTTP traffic to XXXX not permitted

一般出现这个问题的都是在Android高版本中出现的,用于请求和接收数据。但是高版本不允许明文传输数据,可能会造成数据泄露。但是我们想明文传输,谁管他数据泄露问题。所以解决办法来了。。。在AndroidManifest.xml中的Application标签中写入下面这句话。 android:usesCleartextTraffic="true"赶快试试吧,是不是欧克了。...

2020-05-05 10:18:40 1093

原创 实现activity传送数据到fragment

我也查看了好多文章,一般是用setArguments()传送值,再用getArgument()接收值,我用这种方法没有实现我想要的功能。我是在BottomNavigationView中有这种需求。为啥不可以我也查了资料,因为使用setArguments(),需要在fragment绑定activity之前才行,但是BottomNavigationView中,运行之后会直接绑定了,在activity...

2020-03-25 08:37:41 601

原创 android端与SSM搭建的后台端通信

近期在捣鼓后端和Android端的问题,也算解决了自己毕设的难题。学习了两周,也算对ssm框架有所了解了,今天测试了一下,跑成功了。特此来分享记录一下。先上代码。服务器端:我是用idea创建web项目,如图所示创建完成之后,如图所示。有些同学创建完成之后,可能没有tomcat,因为我之前配置过,所以就有了。大家可以自行下载tomcat,安装好之后。接下来就是在web项目里设置。点...

2020-03-24 16:59:45 1852 4

原创 android 从外部导入数据库

先切换到project目录下选择main目录,新建assets文件新建文件之后,把数据库拷贝到assets目录下。然后就开始拷贝数据库到系统默认路径下。//拷贝数据库,并且使用数据库public class DbManager { private static final String DB_NAME = "wordlist.db"; private static f...

2020-03-09 15:16:31 534 3

原创 出现Only the original thread that created a view hierarchy can touch its views.的错误

先看这句话的翻译哈。只有创建视图层次结构的原始线程才能触摸其视图。一般这种错误出现在子线程中操作主线程的控件的操作中,比如更新等操作。解决这类问题,需要使用Handler。关于Handler是什么,大家可以自行去百度哈。先看代码。这是一个子线程 new Thread(new Runnable() { @Override ...

2020-01-19 19:42:20 1795 1

原创 实现从fragment 跳转到Activity

话不多说先上代码。public class CenterFragment extends Fragment { public TextView personal; public TextView setting; //使用fragment布局文件 public View onCreateView(@NonNull LayoutInflater inflater,...

2020-01-08 16:59:11 2120 1

原创 BottomNavigationView去除标题栏的方法

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layou...

2020-01-08 16:52:05 3847 17

基于Android的学生成绩管理系统

基于Android的学生成绩管理系统,具有增删改查等相关功能。界面简洁美观,落落大方,使用的数据库为sqlite数据库,轻巧易携带

2020-05-24

空空如也

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

TA关注的人

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