Android
mashaoshuai12
这个作者很懒,什么都没留下…
展开
-
2021-02-05
RxJava 基本1,创建:1.1,已有数据创建,just() ,from()// from 将数组或Iterable数据取出逐个发射Observable<String> o = Observable.from("a", "b", "c");def list = [5, 6, 7, 8]Observable<Integer> o = Observable.from(list);// just 将单个数据转换为发射的那个数据的Observable// 如果.原创 2021-02-05 17:24:32 · 99 阅读 · 0 评论 -
Android 微信支付流程以及注意事项。
一,集成: 1,微信开放平台进行账户的注册,商户平台的注册以及微信的支付授权。https://open.weixin.qq.com/ 2,在包名下新建wxapi文件夹,同时copy 开放平台的demo下的WXEntryActivity文件,记得在注册文件中注册。 <activity android:name="com.xxx.abc.wxapi.WXPayEntryActivity" android:exported="true" ...原创 2020-12-31 14:52:44 · 404 阅读 · 1 评论 -
Android 照片拍摄
1,权限<uses-feature android:name="android.hardware.camera" android:required="true"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"原创 2020-06-22 14:00:28 · 165 阅读 · 0 评论 -
Android mvvm的基本使用
1,viewMode 是使用mvvm的中间层,而liveData是用于存储viewModel数据的一个强引用数据类型,有生命周期,并且即使切换屏幕也不用destroy, 一般而且结合使用,2,dataBinding 是把viewModel和ui结合的google推出的官方框架eg:build.gradledataBinding{ enabled = true }public class UserActivity extends Activity {原创 2020-06-11 10:05:53 · 540 阅读 · 0 评论 -
Android. CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout的小问题
1,CoordinatorLayout android:fitsSystemWindows="true"2,AppBarLayout android:background="#ffffff" // 设置头部的背景色,替换系统颜色 android:fitsSystemWindows="true" ...原创 2020-04-29 18:05:00 · 207 阅读 · 0 评论 -
Android 不常用Layout
1,CoordinatorLayout协调者布局,协调子布局之间的联动2,AppBarLayout 他的子控件不仅仅可以设置为Toolbar,也可以包含其他的View3,CollapsingToolbarLayout为我们提供了一个叫做Behavior的东西,我们基本上的复杂交互都是使用Behavior来协调完成 example: CoordinatorL...原创 2020-04-07 16:06:27 · 108 阅读 · 0 评论 -
android 主流框架与技术
框架1,Arouter2,Anko3,RxKotlin4,RxAndroid5,RxBus6,Dagger2,7,Glide技术1,MultiStateView 多状态视图2,Qiniu-android-sdk 七牛云存储3,TakePhoto图片处理4,CoveFlow 画廊视图5,TriangleLabelView标签试图6,Flo...原创 2020-02-18 20:56:12 · 332 阅读 · 0 评论 -
openGl 编写流程
1,创建顶点数组2,自己写 顶点着色器 和片元着色器3,将java声明的顶点数组 颜色数组 通过类似于jni接口 传递给 gl语言的变量public class FGLView extends GLSurfaceView { public FGLView(Context context) { super(context); } // 三角形 ...原创 2019-11-13 17:41:21 · 188 阅读 · 0 评论 -
Mac下安装artifactory
1,确定你安装了JAVA SDK 82,下载artifactory 从https://www.jfrog.com/open-source/下载到最新的artifactory,将zip包解压一个目录,最好不含中文。3,Manual Installation手工安装 1)找到$ARTIFACTORY_HOME/bin/artifactory.default...转载 2019-11-09 09:38:31 · 561 阅读 · 0 评论 -
自定义View
主要包括:布局,绘制,触摸反馈1,布局,主要是View在父容器的位置以及自身的尺寸。布局中,所有layout开头的都是给父容器看的,子布局通过onMeasure 的measure方法获取自身所需要的尺寸,父容器获取子布局的期望值,在计算然后父容器通过layout方法把实际尺寸发给子布局onDraw和onMeasure是 总调度。draw和measure是实际代码的地方。...原创 2019-11-04 17:47:59 · 97 阅读 · 0 评论 -
Android 多线程
1,常用的Thread 和Running的方法 thread和running是完全一样的,threadFactory存在线程同步问题。public static void thread(){ Thread thread = new Thread(new Runnable() { @Override public v...原创 2019-10-28 16:45:14 · 132 阅读 · 0 评论 -
Retrofit 同时上传图片和文字,文字服务器多双引号的问题。
1,@Multipart@POST("")Observable<BaseResponse> doCertForSpecialGroup(@Part MultipartBody.Part imageFile1, @Part MultipartBody.Part imageFile2,...原创 2019-10-17 14:58:02 · 266 阅读 · 0 评论 -
JNI中局部引用,全局引用,弱引用
// JNI引用变量// 引用类型主要是 局部引用和全局引用// 作用:在JNI中告知虚拟机何时回收一个JNI变量// 局部引用,通过DeleteLocalRef手动释放对象// 1,访问一个很大的java对象,使用完之后,还要进行复杂的耗时操作,// 2,创建了大量的局部引用,占用了太多的内存,而且局部引用跟后面的操作没有关联性。// 模拟:循环创建数据extern "C"J...原创 2019-03-14 11:42:33 · 338 阅读 · 0 评论 -
Handler核心机制
Android 应用程序入口是ActivityThread 类入队Handler.sendMessage->queue.enqueueMessageLooper.loop(出队)轮询器出队Looper.loop->queue.nextHandler1)MessageQueue mQueue2)Looper mLooper(保存在ThreadLocal中)...原创 2019-04-23 16:52:43 · 134 阅读 · 0 评论 -
Android事件传递
1,事件传递机制------源码2,处理事件的冲突事件:Activity,View,ViewGroup,Key,一,View的事件分发结论: 1, 控件的Listener事件触发顺序是先onTouch,再onClick 2,控件的onTouch返回true,将会onClick事件没有了----组织了事件的传递, 返回false,才会...原创 2019-05-15 14:53:58 · 80 阅读 · 0 评论 -
Android 监听软键盘弹起和收起事件
预备知识】在manifest文件中可以设置Activity的android:windowSoftInputMode属性,这个属性值常见的设置如下:android:windowSoftInputMode="stateAlwaysHidden|adjustPan"那么这里值的含义列表如下:【1】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于...原创 2019-06-13 14:13:05 · 2901 阅读 · 0 评论 -
Android-TabLayout设置内容宽度以及下划线宽度
1.设置TabLayout中各个条目之间的间距,利用app:tabPaddingEnd="10dp"和app:tabPaddingStart="10dp"即可实现,但是,在实际显示中,并没有起作用,所以需要设置额外的属性app:tabGravity="fill",app:tabMinWidth="30dp"2、设置字体大小,需要在style中自定义tabTextAppearance属性Ta...原创 2019-08-08 14:34:34 · 1024 阅读 · 0 评论 -
android 8.0,9.0的注意事项。
Android 8.0跳坑之'Only fullscreen opaque activities can request orientation'先确认自己是不是用的Android8.0版本在AndroidManifast文件中找到相关的Activity类的注册,如果有android:screenOrientation='portrait'啥的麻烦删掉 (已验证)在style文件中找&...原创 2019-08-13 16:01:01 · 129 阅读 · 0 评论 -
dialogFragment设置背景 为透明
添加如下代码到onCreateView()中if (getDialog() != null && getDialog().getWindow() != null) { // 设置背景透明 getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));}...原创 2019-08-23 17:31:07 · 711 阅读 · 0 评论 -
Android 开发中高效的数据结构
1,SimpleArrayMap 替代ArrayMap2,SparseArray<T>,SparseArrayCompat<T>和LongSparseArray<T> 替代 HashMap3,AtomicFile 并不会替代File AtomicFile是Android API17中引入的对文件进行原子操作的帮助类,所谓原子性,是指在对整个...原创 2019-09-16 16:01:47 · 103 阅读 · 0 评论 -
热门标签根据内容自动换行
在外层直接使用TagLayout布局即可。public class TagLayout extends ViewGroup { // 记录每一行有多高 List<Integer> lineHeights = new ArrayList<>(); List<List<View>> views = new ArrayList...原创 2019-04-23 09:32:15 · 121 阅读 · 0 评论 -
IntentService
IntentService(本质:Service+HandlerThread+Intent)需要采用startService来启动,onbind()启动不了。至少要有一个空的构造方法优点:1,提高子线程的优先级2,减轻主线程的压力IntentService内部会创建一个HandlerThread,onHandlerIntent的执行在HandlerThread线程中执行-...原创 2019-04-18 14:59:35 · 86 阅读 · 0 评论 -
JNI之初始化全局变量(全局缓存)
1,接口,// 初始化全局变量public native static void initIds();2,动态加载库进行初始化。static { System.loadLibrary("native-lib"); initIds();}3,头文件JNIEXPORT void JNICALL Java_com_shaoshuaima_test_JniFo...原创 2019-03-15 10:38:39 · 2403 阅读 · 0 评论 -
C/C++调用Java中的类属性。
1,在需要被调用的类中添加native属性。public static native String getString();public String key = "jason";// 访问属性 返回修改之后的属性内容public native String accessField();2,生成头文件.h3,导入头文件,编写C/C++代码。可以直接在as中的C/CPP文件中...原创 2019-03-07 17:13:44 · 280 阅读 · 0 评论 -
JNI之文件的拆分和合并
1,接口,public class NDKFileUtils { // 拆分 public native static void diff(String path,String path_pattern,int count); // 合并 public native static void patch(String path_pattern,int coun...原创 2019-03-19 15:39:35 · 163 阅读 · 0 评论 -
JNI之缓存策略(局部缓存)
// 缓存策略// 这里的static是局部静态变量,key_id对象在缓存中缓存一次。extern "C"JNIEXPORT void JNICALLJava_com_shaoshuaima_test_JniForC_cached(JNIEnv * env, jobject jobj){ jclass cls = env->GetObjectClass(jobj); ...原创 2019-03-14 17:20:17 · 256 阅读 · 0 评论 -
JNI之C中的异常处理和抛出
1,接口// 异常处理public native void exception();2,头文件JNIEXPORT void JNICALL Java_com_XXX_XXX_XXX_exception(JNIEnv *, jobject);3,C++文件// 异常处理。// 1,保证Java代码可以运行// 2,补救措施保证C代码继续运行// JNI 自己抛出的异常...原创 2019-03-14 15:41:49 · 654 阅读 · 0 评论 -
AndroidStudio 生成头文件.h
1,在你需要使用native方法的类A中写明你的调用方法,如:public native void getString();2,在terminal中找到你写的这个类A的路径,直到com.xxx.xxx.A3,在terminal中输入命令javah com.xxx.xxx.A,此时就会在你的当前类目录中生成你所需要的.h文件4,在你的C/C++文件中,导入头文件#include "...原创 2019-03-06 17:56:39 · 948 阅读 · 0 评论 -
c语言基本知识学习。
#include <stdio.h>#include <string.h>#include <stdlib.h>int add(int a , int b){ return a+b;}int minus(int a,int b){ return a-b;}//int (*func_p)(int a,int b) 是...原创 2019-02-26 16:02:59 · 143 阅读 · 0 评论 -
JNI基础知识
JNI(Java Native Interface)Java 调用c/c++,c/c++调用java的一套API步骤如下:1,编写native方法,2,javah命令,生成.h文件javah 完整类名3,复制.h 头文件到cpp工程中4,复制jni.h和jni_md.h文件到CPP工程中,(可以从jdk中复制)5,实现.h头文件中生声明的函数6,生成动态库,供j...原创 2019-03-05 15:00:56 · 183 阅读 · 0 评论 -
android studio 快捷键 Mac
mac上按键符号⌥ : option / alt⇧ : shift⌃ : control⌘ : command⎋ : esc(一)查找/查看相关搜索任意内容 双击 sft当前文件查找/替换 cmd + F / cmd + R 使用cmd + G,sft + cmd +转载 2017-02-17 11:22:44 · 331 阅读 · 0 评论 -
通过JNI修改java中的静态属性
1,在你的调用的方法中写明public static int count = 9;public native void accessStaticField();2,编写头文件,JNIEXPORT void JNICALL Java_com_XXX_XXX_XXX_accessStaticField(JNIEnv *, jobject);3,编写C/C++方法// 访问静...原创 2019-03-11 10:21:54 · 249 阅读 · 0 评论 -
C通过jni调用Java中的方法。
1,编写需要调用的方法。// 产生指定范围的随机数public int getRandomInt(int max){ Log.e("LOG","getRandomInt 执行了......"); return new Random().nextInt(max);}2,编写C/C++调用的接口public native void accessMethod();...原创 2019-03-11 10:49:36 · 428 阅读 · 0 评论 -
C通过JNI调用java中的静态方法。
1,编写需要调用的静态方法。// 产生UUId方法public static String getUUId(){ return UUID.randomUUID().toString();}2,编写调用接口。// C调用java中的静态方法public native void accessStaticMethod();3,头文件。JNIEXPORT void ...原创 2019-03-11 14:29:01 · 528 阅读 · 0 评论 -
Android性能优化之内存泄漏
性能优化:1,如何去优化自己现有的项目,运行更加流畅。app进程 16M,32M,64M2,以后开发项目的时候就要从一开始就要做好。-----------------------------内存泄漏----------------------------------------C/C++自己去分配内存和释放内存----手动管理malloc free什么是内存泄漏,内存不...原创 2019-04-15 17:10:52 · 100 阅读 · 0 评论 -
简单的生产者,消费者
我们经常使用的handler message队列就是一个生产者消费者 模式,// 产品static class ProductObject { // volatile 线程操作变量可见 public volatile static String value;}public static void main(String[] args) { Object loc...原创 2019-04-22 11:04:55 · 136 阅读 · 0 评论 -
HandlerThread(Thread)
优点:1,减轻主线程的压力,提高UI的流程度2,可以处理多个任务,开启一个线程起到多个线程的作用(looper共享)原创 2019-04-18 10:34:55 · 126 阅读 · 0 评论 -
JNI之把数组从C返回到Java
1,接口// 数组接收public native int[] getArray(int len);2,头文件JNIEXPORT jintArray JNICALL Java_com_XXX_XXX_XXX_getArray(JNIEnv *, jobject,jint);3,C++文件// 接收数组extern "C"JNIEXPORT jintArray JNIC...原创 2019-03-13 17:05:03 · 418 阅读 · 0 评论 -
JNI之把数组从Java传到C
1,接口,// 数组传入public native void giveArray(int[] arr);2,头文件JNIEXPORT void JNICALL Java_com_XXX_XXX_XXX_giveArray(JNIEnv *, jobject,jintArray);3,C++文件int compare(const void *a , const void ...原创 2019-03-13 15:23:59 · 211 阅读 · 0 评论 -
JNi开发之java传入数据到C并传回
1,接口。public native String chineseChars(String in);2,头文件。JNIEXPORT jstring JNICALL Java_com_XXX_XXX_XXX_chineseChars(JNIEnv *, jobject,jstring);3,C/C++文件extern "C"JNIEXPORT jstring JNICAL...原创 2019-03-13 11:26:09 · 240 阅读 · 0 评论