自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android在attachBaseContext中修改DisplayMetrics 代码

对象,这意味着我们的应用程序将以 1.5 倍的比例缩放以适应设备屏幕密度。,这是一种中等密度的屏幕密度,可以确保应用程序在不同的设备上都能够正确地显示。在这个例子中,我们设置了一个缩放因子为 1.5 的自定义。对象,然后根据需要创建一个自定义的。在上述代码中,我们首先通过。对象,并将其替换系统的。

2023-03-16 14:44:39 205 1

原创 Android attachBaseContext作用

方法是 Android 应用程序中非常重要的一个回调方法,通过重写该方法,开发人员可以在应用程序启动时进行一些必要的初始化操作,以确保应用程序的正确运行。通常,开发人员会在这个方法中执行一些初始化操作,如创建全局对象、设置默认语言等。配置应用程序的一些基本参数,例如设置应用程序的主题、字体大小、默认语言等。初始化全局变量和对象,例如创建数据库、设置全局的异常处理器等。方法之前被调用,其作用是向应用程序的。对象添加一些额外的功能和信息,如修改。方法中,必须调用父类的方法。方法中,必须调用父类的。

2023-03-16 14:31:47 3513

原创 Android修改context.getResources().getDisplayMetrics()对应多分辨率替换方案

这样,在加载布局文件时,系统会自动根据设备的屏幕密度来选择相应的布局文件,从而实现不同屏幕密度的适配。但是需要注意的是,在适配不同屏幕密度时,还需要考虑到不同屏幕尺寸的适配,以确保应用程序在各种设备上都能够正常运行。同样的,系统会自动根据设备的屏幕密度来选择相应的资源文件,从而实现不同屏幕密度的适配。可以根据不同的设备分辨率,提供不同的布局文件,这样可以避免修改DisplayMetrics的值所带来的风险。除了布局文件外,还可以根据不同的设备分辨率,提供不同的资源文件,如图片、颜色、尺寸等。

2023-03-16 14:25:13 308

原创 Android修改context.getResources().getDisplayMetrics()对应多分辨率风险点

通过修改DisplayMetrics的值,可能会导致应用程序的布局发生变化,从而影响到应用程序的用户体验。的值来适配不同分辨率的设备,但是需要注意风险点,确保修改后的应用程序在各种设备上都能够正常运行,并尽量避免对系统默认的DisplayMetrics进行修改。通过修改DisplayMetrics的值,可能会导致应用程序的性能问题。的值来适配不同分辨率的设备,但是这种做法并不推荐修改系统默认的DisplayMetrics,因为这可能会影响到整个应用程序的显示效果,并且可能会影响到其他应用程序的显示效果。

2023-03-16 14:22:00 630

原创 Android修改DisplayMetrics的方式适配多分辨率代码

以上示例代码演示了三种不同的方式来适配多分辨率,包括根据宽高比缩放布局、根据屏幕密度缩放布局和使用自定义DisplayMetrics适配。根据实际情况选择适合的方式来实现多分辨率适配。

2023-03-16 14:19:27 795

原创 Android分辨率适配

这可以确保布局在不同分辨率的设备上看起来相似。例如,可以创建不同分辨率下的布局文件,将它们放置在不同的文件夹中,以确保在不同的设备上使用正确的布局。缩放位图:使用缩放位图可以确保图像在不同分辨率的设备上都以适当的尺寸呈现。在Android开发中,可以将图像放在不同的文件夹中,以确保在不同的设备上使用正确的图像。动态布局:使用代码编写动态布局,可以确保布局在不同分辨率的设备上以适当的比例进行缩放。综上所述,通过使用相对单位、限制符、缩放位图和动态布局等方法,可以在开发Android应用程序时进行分辨率适配。

2023-03-16 14:12:19 635

原创 华为分屏是否会监听DisplayMetrics

2023-03-16 14:07:26 157

原创 framework学习(1)——源码的角度分析handler(1)

大前提Android中更新Ui必须在主线程,在子线程更新Ui会报子线程不能修改UI异常如果任意线程都可以更新UI的话,线程安全问题处理起来会相当麻烦复杂,就会出现页面错乱。所以就规定了Android的是单线程模型,只允许在UI线程更新UI操作。那如果有许多需要耗时的操作都放在UI主线程中执行的话,必然会造成主线程的卡顿,会阻塞掉UI线程,导致手机不再显示或者接受用户新的操作,给用户一种死机的感觉。因此最好的方法是将用户耗时较长的操作放到另一个线程中去,并且用监听者模式来监听操作的完成。这里handler

2021-01-17 18:00:15 66

原创 Android中使用mvvm(三)

部分内容学自https://www.jianshu.com/p/fc7d53d32096基于DataBinding与LiveData的MVVM在MVP模式下,随着业务逻辑的不断增加,UI也会变得越来的多样化,UI改变多样化势必会造成View层的接口case变多,View的接口类就会变得异常庞大。MVVM的方式完美的解决了MVP模式的这一痛点,它采用双向绑定的机制,实现了UI与数据的绑定操作。仅通过改变数据就可以实现对UI的更新操作。DataBinding(https://mp.csdn.net

2020-05-15 15:07:53 200

原创 Android中使用mvvm(二)

学习自https://www.jianshu.com/p/ef5f8d7d2caa只设置一次数据,再当数据发生变化时,让视图直接自动变化方法一、实现BaseObservable接口用我们操作的VIewModel类型去继承BaseObservable类将User类继承BaseObservable类后,其实不需要再重写什么方法,只需要1.给之前的get方法添加 "@Bindable"注解。2.给之前的set方法的最后边添加"notifyPropertyChanged(BR.对应的控件id)"

2020-05-14 21:24:57 295

原创 Android中使用mvvm

使用mvvm1、让android项目启用dataBinding使用mvvm,必然会用到android为我们提供的dataBinding支持包需要在我们正在编写的module中的build.gradle中添加(添加到android {} 内部) dataBinding { enabled = true }构建一下,就可以使用2、修改布局文件使用databinding框架,需要布局文件 按照 「固定的写法」 来编写。<data>

2020-05-14 20:38:43 701

原创 Android 使用AIDL在进程间通信

这是一种比startService更复杂的启动方式,同时使用这种方式启动的service也能完成更多的事情,比如其他组件可向其发送请求,接受来自它的响应,甚至通过它来进行IPC(Inter-Process Communication)等等。我们通常将绑定它的组件称为客户端,而称它为服务端。如果要创建一个支持绑定的service,我们必须要重写它的onBind()方法。这个方法会返回一个IBinde...

2020-04-27 21:28:39 116

原创 Android MVVM框架熟悉

MVVM全名是Model-View-ViewModel,MVVM可以看作MVP的升级版。降低View和控制模块的耦合,减轻了视图的压力。与MVP不同的地方是,ViewModel会跟View进行绑定。这里会用到Android的 Data Binding。MVP与MVVM区别在于ViewModel与View绑定后,ViewModel与View其中一方的数据更新都能立即通知到对方;Presenter需...

2020-04-26 15:14:53 176

原创 Android MVP框架熟悉

MVP全名是Model-View-Presenter,MVP 是从经典的模式MVC演变而来的。将Model与View彻底分离。解决MVC中Activity职责过多,代码臃肿的问题。通常View与Presenter是一对一的,但复杂的View可以绑定多个Presenter来处理逻辑。与MVC不同的是,一般Activty会当作View层来处理。最主要的区别就是MVP中View与Model并不直接交互,...

2020-04-26 14:30:37 104

原创 Android MVC框架

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种框架模式。将业务逻辑、数据、界面分离的一种代码组织方式,修改界面时无需去修改业务逻辑。Model:模型层,负责处理数据的加载或存储。View:视图层,负责界面数据的展示,与用户进行交互。Controller:控制器层,负责逻辑业务的处理。1.Vie...

2020-04-26 11:52:52 307

原创 框架、设计模式、架构之间的区别

框架和设计模式的区别框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获...

2020-04-26 11:24:51 653

原创 Android LiveData相关的学习

LiveData 是一个可以被观察的数据持有类,它可以感知 Activity、Fragment或Service 等组件的生命周期。它可以做到在组件处于激活状态的时候才会回调相应的方法,从而刷新相应的 UI。不用担心发生内存泄漏。当 config 导致 activity 重新创建的时候,不需要手动取处理数据的储存和恢复。它已经帮我们封装好了。当 Actiivty 不是处于激活状态的时候,如果你想 l...

2020-04-26 10:29:21 155

原创 Android lifecycle相关学习(用法2)

1.引用Lifycycle使用之前需要引入相关的依赖包,它包含在 support library 26.1.0 及之后的依赖包中,如果我们的项目基于这些依赖包,那么不需要额外的引用。// ViewModel and LiveDataimplementation "android.arch.lifecycle:extensions:1.1.0"// alternatively, jus...

2020-04-24 16:17:53 312

原创 Android lifecycle相关学习(用法)

Lifecycle 使得其它组件可以获取类似activity和Fragment那样响应生命周期的能力。我们可以直接在fragment和activity的相关生命周期函数中进行操作,但是这样的代码不太好维护,耦合性太高。 lifecycle-aware组件利用观察者模式,提供了构建生命周期感知型的组件的 类和相关接口,使得其它对“生命周期”感兴趣的组件能自己处理,而不必直接在fragment和act...

2020-04-24 15:06:15 126

原创 Android LayoutInflater学习

LayoutInflater技术广泛应用于需要动态添加View的时候。获得LayoutInflater的实例之后就可以调用它的inflate()方法来加载布局了,如下所示:layoutInflater.inflate(resourceId, root);inflate()方法一般接收两个参数,第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,如果不需要就直接传...

2020-04-23 18:09:20 100

原创 Android LayoutInflater相关学习

根布局的概念:根布局就是xml文件中,ViewGroup中最外面的一层布局。加上根布局的布局属性,合起来我们统称为布局属性集合。在使用LayoutInflater中,如果root不为Null,那么LayoutInflater就会将新视图的根视图属性集合转换成适配root根布局的布局属性集合。LayoutInflater是根据布局资源文件来生成视图层级(包括子视图)的系统服务,获取实例的方式有两...

2020-04-23 16:43:23 174

原创 Android fragmentactivity描述

1、fragmentactivity 继承自activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。2、当然3.0之后你就可以直接继承自Activity,并且在其中嵌入使用fragment了。3、获得Manag...

2020-04-23 15:55:28 90

原创 Android Context相关内容学习

概述Android程序和Java程序一个不同的地方在于Android程序不能仅仅通过一个main方法就启动起来,他还需要特定的环境,就是Context,称之为上下文环境,在这个环境下,有Activity、Service、BroadcastReceiver等系统组件,而这些组件并不是像一个普通的Java对象new一下就能创建实例的了,而是要有它们各自的Context。Context是维持Andr...

2020-04-23 15:52:43 71

原创 Android 学习关于intent 意图

1.实现Activity跳转的方法:1.Intent intent = new Intent(MainActivity.this,NextActivity.class);startActivity(intent);2.Intent intent = new Intent();intent.setClass(MainActivity.this, NextActivity...

2020-04-23 14:48:17 258

原创 Android Activity具体的学习

1.Android中的四大组件,只要你定义了,无论你用没用,都要在AndroidManifest.xml对 这个组件进行声明,不然运行时程序会直接退出,报ClassNotFindException...2. 启动一个Activity的方式,分为显示启动和隐式启动。1. 显式启动:通过包名来启动,写法如下:①最常见的:startActivity(new Intent(当前Act.thi...

2020-04-21 14:30:59 146 1

原创 Android Handler消息传递机制

多个线程并发的操作UI组件,可能会导致线程安全问题的出现,所以Android规定只允许在UI线程中修改Activity中的UI组件,当App第一次启动时,Android会同时启动一条UI线程(主线程),负责处理和UI相关的事件,比如触发事件和修改UI组件。引入Handler类让新启动的线程周期性的修改UI组件的属性值,做界面刷新都通过Handler来通知UI组件更新。UI线程:就是我们的主线程...

2020-04-16 15:34:33 114

原创 Android 基于监听的事件处理机制和具体实现

事件监听机制中由事件源,事件,事件监听器三类对象组成 处理流程如下:Step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作Step 2:用户的操作,触发了事件源的监听器Step 3:生成了对应的事件对象Step 4:将这个事件源对象作为参数传给事件监听器step 5:事件监听器对事件对象进行判断,执行对应的事件处理器(对应事件的处理方法)归纳:事件监听机制是一...

2020-04-16 14:11:18 571

原创 Android 了解四大组件之一的内容提供者(Content Provider)

(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。(2)只有需要在多个应用程序间共享数据才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。(3)ContentProvider实现数据共享。Co...

2020-04-15 18:18:35 390

原创 Android 了解四大组件之一的广播接受者(Broadcast Receive)

在Android中,广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件。可以使用广播接收器来让应用对一个外部时间做出响应。例如,当电话呼入这个外部事件到来时,可以利用广播接收器进行处理。当下载一个程序成功完成时,仍然可以利用广播接收器进行处理。广播接收器NotificationManager来通知用户这些事情发生了。广播接收器既可以在A...

2020-04-15 18:09:17 479 1

原创 Android 了解四大组件之一的Service

service(服务)是安卓中的四大组件之一,它通常用作在后台处理耗时的逻辑,与Activity一样,它存在自己的生命周期,也需要在AndroidManifest.xml配置相关信息。服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应用程...

2020-04-15 17:13:21 252

原创 Android 了解四大组件之一的activity

Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件。一个Activity通常就是一个单独...

2020-04-15 16:40:37 227

原创 Java事件调用机制

1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用类A的方法a()调用类B的方法b(), 一直等待b()方法执行完毕, a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况, 因为b()方法执行时间一长或者直接阻塞的话, a()方法的余下代码是无法执行下去的, 这样会造成整个流程的阻塞.2:异步调用:为了解决同步调用可能出现阻塞, 导致整个流程卡...

2020-04-15 15:55:01 321

原创 Java 泛型

泛型的概念:泛型就是将类型由原来的具体的类型参数化,定义成参数形式(可以称之为类型形参),在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型。在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。泛型只在编译阶段有效。在编译之后程序会采...

2020-04-15 15:08:00 60

原创 向量和map

向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。Vector对象的元素可以通过索引访问数据。使用Vector类可以在创建对象的时候不必给对象指定大小,因为它的大小会根据需要动态的变化。Vector 类实现了一个动态数组。和 ArrayList 很相似,可以同步访问,主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。MapM...

2020-04-14 20:21:18 202

原创 Java数据接口和类

Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:枚举(Enumeration)位集合(BitSet)向量(Vector)栈(Stack)字典(Dictionary)哈希表(Hashtable)属性(Properties)...

2020-04-14 18:10:07 134

原创 Java抽象类和接口

抽象类:1. 抽象类不能被实例化,不能有具体的对象,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。2. 抽象类的定义 abstract class className,抽象方法的定义:public abstract void funcName()(抽象方法不能有方法体)3.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。4.构造方法,...

2020-04-14 17:48:44 87

原创 Java构造器还函数调用顺序

构造器如果父类的构造器带有参数,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。如果父类构造器没有参数,则在子类的构造器中不需要使用super关键字调用父类构造器,系统会自动调用父类的无参构造器。函数调用顺序当一个类继承于另一个类,且子类中没有重载父类的方法。用子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找...

2020-04-14 16:42:47 125

原创 Java继承最基础的一些相关的东西

1.Java继承不支持多继承,但是支持多重继承。2.Java继承的几个特点:子类拥有父类非 private 的属性、方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是...

2020-04-14 16:28:50 60

原创 安装Windows与ubuntu双系统常见问题汇总

安装Windows与ubuntu双系统常见问题汇总一、无法U盘启动第一种情况,换其他U盘引导,排除U盘问题;第二种情况,确认U盘没有问题之后,开机按F2键(因品牌与型号不一,按键也有所不同,常见的有F1,F2,DEL)进入bios,移动到boot选项卡(个别型号不同)找到标有boot或者UEFI字样的选项,选择关闭UEFI或选择Legacy选项即可;二、安装后丢失引导,或者无法引导

2017-07-10 19:21:55 2518

原创 安装linux系统

安装linux系统1、 下载linux发行版的系统镜像,例如:ubuntu,cent OS……2、 下载软碟通并进行安装3、 有一个U盘4、 打开软碟通 5、 点击文件->打开->选择刚刚准备好的系统镜像 6、 点击->启动->写入硬盘映像,在弹出的界面中确认驱动硬盘驱动器和映像文件无误后,点击写入;7、 在“我的电脑”上右击,选择“管理”, 8、 点击“磁盘管理”

2017-07-10 19:19:08 351

design.zip

专门整理了23种设计模式(AndroidStudio上运行成功),给大家参考

2021-02-23

七月七日课时笔记

基础命令及vim的使用(markdown)

2017-07-08

安装windows系统

安装系统

2017-07-06

七月六日课时笔记

上课笔记

2017-07-06

嵌入式笔记

上课笔记

2017-07-06

安装Windows与ubuntu双系统常见问题汇总

安装Windows与ubuntu双系统常见问题汇总

2017-07-06

安装虚拟机

安装虚拟机

2017-07-06

空空如也

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

TA关注的人

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