try { WindowManager manager = getWindowManager(); Field mGlobal_field = manager.getClass().getDeclaredField("mGlobal"); mGlobal_field.setAccessible(true); Object managerGlobal = mGlobal_field.get(manager); //noinspection ConstantConditions Field mViews_field = managerGlobal.getClass().getDeclaredField("mViews"); mViews_field.setAccessible(true); //noinspection unchecked ArrayList<View> mViews = (ArrayList<View>) mViews_field.get(managerGlobal); //noinspection ConstantConditions View dialogDecorView = mViews.get(mViews.size() - 1);// TODO 这里需要做一下判断,是不是dialog的decorView WindowManager.LayoutParams params = (WindowManager.LayoutParams) dialogDecorView.getLayoutParams(); params.gravity = Gravity.TOP; dialogDecorView.setLayoutParams(params); manager.removeView(dialogDecorView); manager.addView(dialogDecorView, params); } catch (Exception e) { e.printStackTrace(); }
Java 一些自用工具类
密码保护:二维路径规划: 蚁群算法+2Opt邻域搜索
编译 GDAL For Android
需要编译的项目:GDAL2.4.4 + PROJ5.2.0 + SQLite3.22.0
一、安装NDK
从官网下载NDK https://developer.android.google.cn/ndk/downloads
解压并配置环境变量,我的路径是 /usr/local/android-ndk
,可以写到 /etc/profile
里,更改配置重新 source /etc/profile
就行了。
export NDK_HOME=/usr/local/android-ndk/android-ndk-r21继续阅读“编译 GDAL For Android”
几个常用排序算法
插入排序
fun insertSort(arr: IntArray) { for (i in 1 <em>until </em>arr.size) { val temp = arr[i] var preIndex = i - 1 while (preIndex >= 0 && arr[preIndex] > temp) { arr[preIndex + 1] = arr[preIndex] preIndex-- } arr[preIndex + 1] = temp } }继续阅读“几个常用排序算法”
RxJava简析
注:本文章代码基于 RxJava:3.0.0-RC4
一、概述
官方描述: RxJava是反应式编程扩展的JVM实现:该库用于通过使用可观察的序列来组成异步和基于事件的程序。
即:RxJava 是一个用反应式编程特性来扩展观察者模式的事件处理库。

Android: 使用系统应用选择器打开/分享文件
- 使用应用选择器打开文件
Android: SingleInstance 填坑 —— 优雅地返回到上一个Activity
因为一个多任务的需求,所以想到了使用 SingleInstance 方式启动多任务容器 Activity,保证一定情况内 Activity 不被销毁,可以随时切换回来操作。
基于面向百度编程可知 SingleInstance 会另开一个返回栈(Task)来启动该 Activity,但首先有两个问题需要解决:
1. 如何从SingleInstance 返回到上一个 Activity
2. ActivityResult的实现
Android: 使用XStream解析.Net后台序列化的XML
因业务需要在Android端解析.net后台接口传递的XML,由于Android精简了jdk,无法使用原生XMLDecoder,因此选择了XStream实现。
C#后台使用原生XmlSerializer序列化
public static string Serialize(object data) { string result = string.Empty; try { using (MemoryStream ms = new MemoryStream()) { XmlSerializer xml = new XmlSerializer(data.GetType()); xml.Serialize(ms, data); byte[] arr = ms.ToArray(); result = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); } } catch (Exception ex) { throw; } return result; }
移动端使用XStream对接口返回的XML进行解析,注意的是如果序列化的实体类中的字段包含其它实体类,解析时需要为其设置对应类的别名,下面通过反射获取这些类
Android: Java2Kt笔记(1) — Java接口在Kotlin的实现方式
OnHttpsResult是MyHttpsClient类中的接口,用于处理从服务器接收的json数据
public class MyHttpsClient { public interface OnHttpsResult{ void onResult(JSONObject jsonObject); } ...... }