• 最简单ScrollView中嵌套RecyclerView

    最简单ScrollView中嵌套RecyclerView

    本例RecyclerView限LinearLayoutManager,VERTICAL,也就是和ListView一样效果。 布局: layoutmanager和recyclerview定义: [crayon-681630f999d28002065533/] -end

  • Android中使用protobuf,谷歌的Protocol Buffers简单入门

    Android中使用protobuf,谷歌的Protocol Buffers简单入门

    Android中使用protobuf Protocol Buffers Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。同XML相比,Protocol buffers在序列化结构化数据方面有许多优点(google官方提出): • 更简单 • 数据描述文件只需原来的1/10至1/3 • 解析速度是原来的20倍至100倍 •&n...

  • java方法和jni函数手动映射注册(动态注册)示例

    java方法和jni函数手动映射注册(动态注册)示例

    前文参考:http://www.gaohaiyan.com/3695.html 首先,当然是在本地实现java方法。 然后,定义一个JNINativeMethod类型的数组,对本地函数和java方法进行配对。 接着,jni中声明了一个JNI_OnLoad函数,当java通过System.loadLibrary加载库文件时,jvm自动调用。我们在此函数中,创建一个JNIEnv上下文对象。 最后,通过RegisterNatives函数,对本地函数和java...

  • java方法和jni函数互相调用示例

    java方法和jni函数互相调用示例

    前文参考:http://www.gaohaiyan.com/3695.html java数据类型和jni数据类型对照:[crayon-681630f99b18d984756953/] Java:[crayon-681630f99b194254567832/] 在JNI中改变java实例成员变量的值 [crayon-681630f99b199122891566/] 在JNI中改变java静态成员变量的值 [crayon-681630f99b19e374993219/] 从java向JNI传递数据[crayon-681630f99b1a3694307074...

  • Android中jni.h的简单注释

    Android中jni.h的简单注释

    JNI是Java Native Interface的缩写,从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。 jni.h可以在AndroidNDK、SDK,JDK,及gcc等库中找到。 下面4个内容一致: %ndk%/sysroot/usr/include/jni.h %sdk%/ndk/21.1.6352462/sysroot/usr/include/jni.h %ndk%/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/incl...

  • java手动调用jni示例

    java手动调用jni示例

    本例环境:Macos。 JDK的环境变量当然是必须首先可用的,只要终端执行 java 能运行即可。 首先,有个java类MyTest.java文件: [crayon-681630f99c9bd713900416/] 然后,在这个java文件所在的路径下,使用 javac 生成 h 文件。 [crayon-681630f99c9c7724553231/] 然后,修改这个h文件为c++的源码文件MyTest.cc: [crayon-681630f99c9cb814386515/] ...

  • LibGDX开发指北-2DGame上路

    LibGDX开发指北-2DGame上路

    u3d cocos libgdx 相较于前两种跨平台游戏框架,gdx在国内冷门的很,甚至不及egret。没有资本的运作歹命。 这里制作一个在线手册,以git的形式发布。期望由浅入深的和小白爱好者分享此简单而不平凡的game框架。 手册以android为平台。 同时期望对此有深入研究的朋友关注/创建分支进行修订/推广,让更多人[知道,了解,使用,研究]。 git地址:http:...

  • java swing 层叠面板控件的两种方式

    java swing 层叠面板控件的两种方式

    常用的: 边界布局(borderlayout) 流式布局(flowlayout) 网格布局(gridlayout) 权重网格布局(GridBagLayout) 盒子布局(boxlayout), 都是在一个范围内,划出片块,每人分1块使用,如同七巧板。 其它: ScrollPaneLayout,JScrollPane运用的布局管理器 ViewportLayout,JViewport运用的布局管理器 层叠相关: CardLayout卡片布局,如同一...

  • Java中引起内存泄漏(OOM,OutOfMemory)的情景和处理

    Java中引起内存泄漏(OOM,OutOfMemory)的情景和处理

    先看下2个概念的定义: 1)内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 2)内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光...

  • git中fork其他人的项目及提交PullRequest

    git中fork其他人的项目及提交PullRequest

    PullRequest简称PR。 这里以源项目 https://github.com/k2-fsa/sherpa-ncnn 为例。 1.fork别人的项目 点击fork按钮,根据提示操作。之后就能在自己的空间里看到项目。 2.克隆自己的项目 fork来的项目已经有了自己专属的git网址。首先,克隆这个url到本地。 然后,将源项目添加到自己项目的upstream。并创建一个自己的分支。 [crayon-681630f99d77d...

  • git中tag相关操作

    git中tag相关操作

    假设tag为 “v1.0” 创建tag     git tag v1.0     或:git tag -a v1.0 -m "tag的说明" 查看本地tag:     git tag     或:git tag -l -n # 同时显示说明信息     git tag -l "v1.*" # 查看全部1.*版本tag     git sho...

  • Android中自定义NumberPickerDialog

    Android中自定义NumberPickerDialog

    安卓的api中提供了DatePickerDailog、TimePickerDialog,这种都是比较复杂的数值型选择器。但纯数字选择器Dialog却未提供。 DataPicker、TimePicker都是FrameLayout,而本例使用的NumberPicker却是LinearLayout,具体未深入研究。总之,看起来前2者更亲近,我们要实现的NumberPickerDialog相貌和前2者差不多。 这里的代码也是依照TimePickerDialog仿写。 效...

  • Android事件处理框架EventBus使用注意点

    Android事件处理框架EventBus使用注意点

    关于EventBus,已经有海量博文资料。 这里记录几点eventbus-3.0.0-beta1使用时的问题。 1.准备 官方代码库:https://github.com/greenrobot/EventBus Jar包地址:http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22de.greenrobot%22%20AND%20a%3A%22eventbus%22 新建安卓项目,将jar放入libs里 2.事件订阅者与订阅函数 直接上代码,关于 Event...

  • WindowManager$BadTokenException: Unable to add window

    WindowManager$BadTokenException: Unable to add window

    WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@1ab09b05 is not valid; is your activity running?   这个异常在网上已经有很多解说。最常见的情景:在Activity(或者Fragment)里创建一个PopupWindow,这个PW的context使用的是getApplicationContext(),而PW的ctx要求是其父级容器,然后就导致错误发生。 还...

  • 获取Linux版本代号

    获取Linux版本代号

    # lsb_release -a Ubuntu之类的Linux设置更新源时总是需要一个版本代号,可以使用这个命令获取。如下,代码是rolling, [crayon-681630f99e5a8578060692/] 更新源就如是: [crayon-681630f99e5af547581762/] - end

  • Ubuntu10.04修改为默认root登陆

    Ubuntu10.04修改为默认root登陆

    ubuntu10.04安装时只能创建登录名非root、admin的用户, 有时因为使用的需要,希望默认直接root登录。 可以这样: 1.新装后初始化root用户 打开终端 sudo passwd root 首先 输入当前普通用户的密码 然后 输入两次为root用户设置的密码 输入刚刚设置的root用户密码就能登录了 su - root 查看当前连接终端的用户 whoami 推出终端 exit 2.重...