- 博客(629)
- 资源 (56)
- 收藏
- 关注
原创 安卓surfaceview的使用方式
surfaceview内部机制和外部层次结构在安卓开发中,我们经常会遇到一些需要高性能、高帧率、高画质的应用场景,例如视频播放、游戏开发、相机预览等。这些场景中,我们需要直接操作图像数据,并且实时地显示到屏幕上。view组件是在主线程中进行绘制的,如果绘制过程耗时过长或者频繁刷新,可能会导致主线程阻塞,影响用户交互和界面响应。view组件在绘制时没有使用双缓冲机制,也就是说每次绘制都是直接在屏幕上进行的,这可能会导致绘制过程中出现闪烁或者撕裂的现象。
2024-05-08 17:28:07 2915
原创 Android适配平板屏幕尺寸
人为判断方法:大于6英寸的就是平板。小于6英寸的都是手机平板尺寸: 6英寸、7英寸、10英寸、14英寸…Android系统支持多配置资源文件,我们可以追加新的资源目录到你的Android项目中。命名规范: 资源名字-限制符layout/drawble文件夹 说明layout 默认中等屏幕layout-small 小屏幕layout-large 大屏幕layout-xlarge 特大屏幕layout-land 横屏。
2024-04-10 16:04:57 1774
原创 TextView 中实现打印机效果,即字符串逐字显示,并且可以自动换行
在这个示例中,我们使用 Handler 来实现逐字显示的效果,并且在每个字符显示后更新 TextView 的内容。你可以根据需要调整显示的间隔时间和文本内容。要在 TextView 中实现打印机效果,即字符串逐字显示,并且可以自动换行,你可以使用 Handler 来实现逐字显示的效果。
2024-03-15 12:12:01 672
原创 TextView 中实现打印效果并且可以换行
/ 允许滚动printTextView.setText(“”);String textToPrint = “这是要打印的文本内容,可以包含换行符\n换行符可以让文本换行显示\n继续添加文本内容…通过以上方法,你可以在 TextView 中实现打印效果,并且可以包含换行符让文本换行显示。
2024-03-15 12:06:51 448
原创 TextView实现打印机效果 ,字符串逐字显示
/从0到textCount - 1 是设置从第一个字到最后一个字的变化因子。//所有文字都显示完成之后进度回调结束动画。//过滤去重,保证每个字只重绘一次。* 文字逐个显示动画 通过插值的方式改变数据源。//执行总时间就是每个字的时间乘以字数。//文字绘制到整个布局的中心位置。* @param canvas 画布。//存放单个字的数组。* 设置逐渐显示的字符串。* 每个字出现的时间。
2024-03-11 21:24:50 614 1
原创 Android 动画 Lottie 如何使用
Lottie 是Airbnb开源的一个面向 iOS、Android、React Native 的动画库,能分析 Adobe After Effects 导出的动画,并且能让原生 App 像使用静态素材一样使用这些动画,完美实现动画效果。1.劣势(1)性能不够好—某些动画特效,内存和性能不够好;相对于属性动画,在展示大动画时,帧率较低2.优势(1)开发效率高—代码实现简单,更换动画方便,易于调试和维护。(2)数据源多样性—可从assets,sdcard,网络加载动画资源,能做到不发版本,动态更新。
2023-12-13 14:39:19 2157
原创 Android 掉帧优化
对于传统的60刷新率手机来说,每16ms会发出一个VSync信号,复制CPU/GPU放在缓存中的图像,再通知CPU/GPU计算下一帧要显示的内容,再把刚复制的图像显示在屏幕上,这就是一个屏幕刷新周期。运行程序后打开Profile,可以看到CPU、MEMORY、NETWORK和ENERGY四个动态图表,点击CPU后,下方出现CPU Profile界面,如下所示,点击"record"即可开始记录,点击"stop"后得到这一段时间内的方法调用栈。监控掉帧现象时,我们可以使用下方的adb命令,具体可见参考.
2023-11-28 11:18:12 1189
原创 Android常见的几种RuntimeException
当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。
2023-05-12 15:37:53 1161 1
原创 Android 配置子Module混淆时遇到的错误,和一些零散技术点总结
4、所有被主Module直接或间接引用了的Module,在打包时,其AndroidManifest.xml文件都会合并到主Module的AndroidManifest.xml文件中。3、所有Module中的res目录下的资源都会在打包时合并到主Module的res目录下对应文件位置。2、主Module配置了混淆,打包成apk后,其他Module的代码也会一起混淆。1、子Module不能配置混淆,仅仅只能在主Module中配置混淆。6、手机横竖屏时的宽度dp值和高度dp值。
2023-05-12 14:15:56 427
原创 Android混淆配置总结-持续更新
Android打正式的release包混淆是必备的,避免APP被反编译,使项目中隐秘的技术或信息被别人查看。
2023-05-10 16:56:56 427
原创 Android 混淆介绍
Android 混淆介绍目录:一、启用混淆文件二、ProGuard作用三、编辑混淆文件 (五步搞定)四、常用混淆写法五、其他一些混淆注意事项
2023-05-10 16:52:12 765
原创 Android gradlew 常用命令
gradlew命令都可以使用简写,例如:./gradlew assembleRelease 简写为:./gradlew aR快速构建命令。
2023-04-10 10:11:19 1414
原创 报错:Only the original thread that created a view hierarchy can touch its views.
主线程,子线程
2023-01-28 17:03:53 2000
原创 五幅图学会Android Canvas的坐标系变换(rotate translate scale)
在写公司项目的时候,须要画一个垂直的SeekBar,一开始就是简单的在xml文件里面,添加了android:rotate="-90"这个配置,不事后面发现不少问题。最后网上查资料,使用了Canvas.rotate()和Canvas.translate()的结合,实现了垂直的SeekBar布局。android一.Canvas的坐标系介绍通常来说,一个自定义view的canvas的显示区域就是View的区域,大小就是width*height。canvas@Override protec
2022-05-31 10:57:46 1337
转载 Android View的生命周期
View生命周期相关方法View是什么?官方源码注释中的定义:这个类是用户接口的基础构件。View表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。View是所有widget类的基类,Widget类用于创建交互式UI构件(按钮,输入框等)。View类的ViewGroup子类是layout的基类,Layout是一个不可见的容器,它保存着View(或ViewGroup)并定义这些View的layout 属性。简单点说,View就是屏幕上的一块矩形区域,我们可以在这块区域绘制我们想让用户看到的图形
2022-05-31 10:56:25 788
原创 Android Canvas rotate() 旋转
Canvas 提供了 rotate() 方法用于旋转当前 Canvas 对象一定角度rotate ( 旋转 )void rotate(float degrees)final void rotate(float degrees, float px, float py)围绕坐标原点或指定坐标旋转 degrees 度,值为正顺时针参数说明参数 说明 degrees 旋转角度 px 指定旋转的中心点坐标的 x 坐标 py 指定旋转的中心点坐标的 y 坐标
2022-05-31 10:46:30 2087
原创 android SeekBar 禁止拖拽、点击的实现(可能是最简单粗暴的实现)
android SeekBar 禁止拖拽、点击的实现(可能是最简单粗暴的实现)((SeekBar)findViewById(R.id.seekbar)).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; }});Android 自定义SeekBar只能滑动,禁...
2022-04-13 18:06:06 4095
原创 android : clipToPadding ,clipChildren ,duplicateParentState属性解释
1.android:clipToPadding和android:clipChildren是ViewGroup中的属性2.android:clipToPadding和android:clipChildren默认为true,3.一定是在布局文件的根节点设置,否则不起作用假设我们要做一个效果,界面最顶部是一个ActionBar并且是半透明的,ActionBar下面是一个ListView,在初始状态 下,ListView是top是在ActionBar的bottom位置的,但当ListView滚动的时
2022-04-13 14:57:12 398
原创 setFocusable,setFocusableInTouchMode,requestFocusFromTouch , requestFocus
setFocusable与setFocusableInTouchMode差异前者针对在键盘下操作的情况,如果设置为true,则键盘上下左右选中,焦点会随之移动。而后者,显然是针对触屏情况下的,也就是我们点击屏幕的上的某个控件时,不要立即执行相应的点击逻辑,而是先显示焦点(即控件被选中),再点击才执行逻辑。android:focusable=“true”不会改变android:focusableInTouchMode,因此只在键盘状态下显示焦点,在TouchMode状态下,依旧无法显示焦点。a...
2022-04-08 17:49:14 739
原创 android InputStream相关类
InputStream 作用:用来表示哪些从不同数据源产生输入的类,这些数据源包括:字节数组、String对象、文件、“管道”、一个由其他种类的流组成的序列、其他数据源(如internet链接等)1、inputstream是最原始的,专注了核心功能,此抽象类是表示字节输入流的所有类的超类;2、inputstreamreader是核心功能的装饰,提供了更封装的方法;inputstreamreader是将字节流转换成字符流,是上面两者的转换类 比如输入时inputStream,可以...
2022-04-01 16:14:39 1430 1
原创 使用AudioTrack播放pcm流式音频
一、什么是AudioTrack/** * The AudioTrack class manages and plays a single audio resource for Java applications. * It allows streaming of PCM audio buffers to the audio sink for playback. This is * achieved by "pushing" the data to the AudioTrack object us
2022-04-01 14:55:38 3628
原创 用XML文件对控件的设置-shape形状的使用与自定义图形
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 内边距 将该背景图片的边框与图片形成10dp的边框--> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom=.
2022-04-01 13:51:39 3064
原创 RecyclerView添加分割线
RecyclerView 并没有 divider 属性,但是我们可以通过 RecyclerView 的 addItemDecoration() 来添加分割线,该方法参数为 RecyclerView.ItemDecoration。介绍当 RecyclerView 添加 ItemDecoration 后,RecyclerView 在绘制每个 item 的时候,会去绘制 decorator,也就是会调用 ItemDecoration 的 onDraw() 和 onDrawOver() 方法。Recyc
2022-04-01 09:35:33 4225
转载 Android bytes与KB、MB、GB单位转换
1.先定义三个整型常量//定义GB的计算常量private static final int GB = 1024 * 1024 *1024;//定义MB的计算常量private static final int MB = 1024 * 1024;//定义KB的计算常量private static final int KB = 1024;2.实现转换public static String bytes2kb(long bytes){undefined//格式化小数DecimalForm.
2022-04-01 09:28:06 1310
原创 java 中byte[] 数组的合并
因工作的需要,在从事 .Net 的开发中接触到了 Java, 虽然在大学的时候学过一段Java 编程,但并没有在实际的工作中使用过, Java 和 .Net的C#语法很相似,都是面向对象的,感觉在语法上只有些细微的差异,这里主要介绍以下,将两个数组合并成的操作,废话不多说,直接上代码://System.arraycopy()方法 public static byte[] byteMerger(byte[] bt1, byte[] bt2){ byte[] bt3 = new
2022-04-01 09:26:45 5136
原创 Android - Kotlin 普通类,构造函数,抽象类,内部类等
一、类的声明1、关键字声明类的关键字为class二、类的构造函数在Kotlin中,允许有一个主构造函数和多个二级构造函数(次构造函数)。其中主构造函数是类头的一部分。 关键字或者构造函数名:constructor(参数)主构造器主构造器中不能包含任何代码,初始化代码可以放在初始化代码段中,初始化代码段使用init关键字作为前缀。class Person constructor(firstName: String) { init { println("F.
2022-03-07 17:55:03 4234
原创 Android - Kotlin 继承类
超类(Any)Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类:class Example // 从 Any 隐式继承如果一个类要被继承,可以使用open关键字进行修饰。open class Base(p: Int) // 定义基类class Derived(p: Int) : Base(p)定义定义继承类的关键字为:open。不管是类、还是成员都需要使用open关键字。 定义格式为:open c...
2022-03-07 17:33:24 2676
原创 @SuppressLint(“XXXXXXX”)分析
碰到方法的前面和类的前面有时会出现@SuppressLint或者@SuppressWarnings这样的黄色警告,看起来很不舒服,于是上网搜集了一些相关资料。发现这些警告的出现其实是由于我们编写代码时的一些不规范的写法导致,解决这些问题其实是能提高我们程序的安全性、可用性和性能的。接下来就让我为大家一一说明。1、@SuppressLint(“DrawAllocation”)原因:我们都知道View及其子类的OnDraw(Canvas canvas)方法会实时调用来更新界面的,然而有时我们会在onD..
2022-03-07 16:05:21 82922 10
原创 [Android ] seekbar ,去除自定义thumb滑块不透明背景
在xml布局中使用seekbar ,给thumb一个图片,但是却多了些背景出来,不透明了<SeekBar android:id="@+id/sbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:splitTrack="false" android:progress="20" andr
2022-03-07 15:58:37 4337 2
原创 Java MediaMetadataCompat
导入方法依赖的package包/类import android.support.v4.media.MediaMetadataCompat;MediaControllerCompat mController = new MediaControllerCompat(getActivity(),getSessionToken());MediaMetadataCompat metadata = mController.getMetadata();PlaybackStateCompat playBac
2022-02-25 19:11:23 943
原创 Android中关于保留小数点位数的处理
保留两位小数方法一:{ double c = 3.154215; java.text.DecimalFormat myformat=new java.text.DecimalFormat("0.00"); String str = myformat.format(c);}方式二:{ java.text.DecimalFormat df = new java.text.DecimalFormat("#.00"); df.format(你要格式化的
2022-02-16 14:06:37 2485
原创 Android ContentProvider
Android四大组件之一 content provider,它主要的作用是:实现各个应用程序之间的(跨应用)数据共享。在这里涉及到进程通信问题,自然在Android中使用的是binder来进行,但是由于content provider提供的数据量一般都比较大不能够直接进行传递。所以这里采用的是一种叫做 匿名共享内存的方式进行数据传递,在不同的进程中只需要传递一个文件描述符就可以。通过下图对content provider有个比较直观的了解:ContentProvider提供了在应用程序
2022-02-11 11:33:46 367
原创 Android 的动作、广播、类别、附加数据、启动标记等
广播:广播:充电状态,或者电池的电量发生变化 BATTERY_CHANGED_ACTION android.intent.action.BATTERY_CHANGED 广播:在系统启动后,这个动作被广播一次(只有一次) BOOT_COMPLETED_ACTION android.intent.action.BOOT_COMPLETED 广播:语音电话的呼叫转移状态已经改变 CALL_FORWARDING_STATE_CHANGED_ACTION andro...
2022-02-10 14:24:54 234
android 多张图片渐变切换控件
2023-01-03
ProBuilder Advanced.rar
2021-11-16
xwalk_core_library-15.44.384.13.aar
2017-10-19
Android-侧滑菜单SlidingMenu
2016-08-08
JDT - eclipse插件
2012-12-25
org.eclipse.jdt
2012-12-25
FlexBuilder 3使用 vss1.6.1
2012-12-25
FlashBuilder 4使用 vss 1.6.2
2012-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人