首页 文章 精选 留言 我的

精选列表

搜索[android studio],共10000篇文章
优秀的个人博客,低调大师

Android JNI入门第五篇——基本数据类型使用

前面讲到了java和native数据类型,这里就开始做一下使用: 第一步:新建工程 第二部:书写 java方法: publicclassNativeMethod{ static{ System.loadLibrary("com_nedu_jni_jnidemo5-jni"); } publicnativebooleangetBoolean(booleanb); publicnativebytegetByte(byteb); publicnativechargetChar(charc); publicnativeshortgetShort(shorts); publicnativeintgetInt(inti); publicnativelonggetLong(longl); publicnativefloatgetFloat(floatf); publicnativedoublegetDouble(doubled); } 第三部:调用javac、javah命令生成h文件。 第四部:补充native方法,如下: #include<stdio.h> #include<stdlib.h> #include"com_nedu_jni_jnidemo5_NativeMethod.h" /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getBoolean *Signature:(Z)Z */ JNIEXPORTjbooleanJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getBoolean (JNIEnv*e,jobjectthiz,jbooleanb){ returnb; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getByte *Signature:(B)B */ JNIEXPORTjbyteJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getByte (JNIEnv*e,jobjectthiz,jbyteby){ returnby; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getChar *Signature:(C)C */ JNIEXPORTjcharJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getChar (JNIEnv*e,jobjectthiz,jcharc){ returnc; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getShort *Signature:(S)S */ JNIEXPORTjshortJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getShort (JNIEnv*e,jobjectthiz,jshorts){ returns; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getInt *Signature:(I)I */ JNIEXPORTjintJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getInt (JNIEnv*e,jobjectthiz,jinti){ returni; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getLong *Signature:(J)J */ JNIEXPORTjlongJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getLong (JNIEnv*e,jobjectthiz,jlongl){ returnl; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getFloat *Signature:(F)F */ JNIEXPORTjfloatJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getFloat (JNIEnv*e,jobjectthiz,jfloatf){ returnf; } /* *Class:com_nedu_jni_jnidemo5_NativeMethod *Method:getDouble *Signature:(D)D */ JNIEXPORTjdoubleJNICALLJava_com_nedu_jni_jnidemo5_NativeMethod_getDouble (JNIEnv*e,jobjectthiz,jdoubled){ returnd; } 第五步:制作mk文件 LOCAL_PATH:=$(callmy-dir) include$(CLEAR_VARS) LOCAL_MODULE:=com_nedu_jni_jnidemo5-jni LOCAL_SRC_FILES:=NativeMethod.c include$(BUILD_SHARED_LIBRARY) 第六步:调用native方法 publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); TextViewtext=(TextView)findViewById(R.id.text); NativeMethodmethod=newNativeMethod(); text.setText("返回boolean:"+method.getBoolean(true)+"\n"+ "返回byte:"+method.getByte((byte)0)+"\n"+ "返回char:"+method.getChar('c')+"\n"+ "返回short:"+method.getShort((short)1)+"\n"+ "返回int:"+method.getInt(1)+"\n"+ "返回long:"+method.getLong(9)+"\n"+ "返回float:"+method.getFloat((float)1.0)+"\n"+ "返回double:"+method.getDouble(2.0)+"\n"); } 运行截图: 总结:JNI中传过来的java基本类型可以直接使用。 本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817170,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android 自定义录音、播放动画View,让你的录音浪起来

最近公司项目有一个录音的录制和播放动画需求,然后时间是那么紧,那么赶紧开撸。 先看效果图 嗯,然后大致就是这样,按住录音,然后有一个倒计时,最外层一个进度条,还有一个类似模拟声波的动画效果(其实中间的波浪会根据声音的大小浪起来的~) 2 实现思路 然后,我们适当的来分析一下这个录音动画的实现方式。这个肯定是通过自定义控件,咱们来把这个效果完完全全画出来。 大致包括以下几个点: 1. 最外层的进度条,最坑的就是一开始的一个渐变的效果 2. 然后进度条最前方是有一个点的(我肯定选择用图片来实现) 3. 中间的波浪(关键是要随着声音的大小浪起来) 4. 中间的倒计时 3 实现过程 1.画最外层的圆 2.画提示的文字 3.画倒计时(静止时间) 4.画声波 这边代码就不展开了,画的有点烦,简单说下,还需要自己体会哈。上面分隔线之前的说白了就是让声波动起来,也就是改变volume的值,然后后面有3个for循环。 第一个for循环是为了确定声波水平线的位置,第二个是画声波,第三个是颜色的渐变。 5.画外圈进度的那个点 我们先会个图分析一下,如下图。A点就是起始坐标,一开始我们的小圆点是隐藏的,如果不算padding的话,x=witdh/2,y=0; 嗯,然后呢画图片我们用的是 canvas.drawBitmap(......); 那么要知道,drawBitmap()这个方法画的时候是我们图片的左上角去画到A点的,其实我们应该往左上角挪一点,才能让图片的中心真正意义上的和A点重合,对吧对吧,嗯,仔细思考一下。 然后继续看上面那个图,当我们A点随着时间运动到B点之后,我们要算出B点的坐标。 这边用一下三角函数啦,我们设A到B,转过的角度为α,设圆的半径为r,那么A到B其实横向增加的距离应该就是 m = x+r*sin(α); n = y+r*cos(α); 那么我们该图片的所有代码就是: 6.画外边的带进度和带渐变的大圆 我的实现方式很简单,从我们的UI图看出,外面的大圆在1/4进度的时候是渐变的,然后剩下的3/4圆其实都是一种颜色,对吧,那我就画2个圆来实现这个效果呗。 当progress<90的时候,我们画那个渐变的圆环,当>90的时候,我们同时画出那个渐变的和纯色的圆环(当progress的时候,这个时候其实那个渐变的圆环没变化,只是纯色的圆环一直在变)。 如图:A是那个渐变的圆环,B是纯色不变的圆环 7.然后最后就剩下一个计时器了,还有那个上面一直出现的progress 8.最后就是提供各种接口,各种绘制和启动机制了,最主要的还是上面的绘制方法。 比如你的自定义属性 以及一切其余自定义View的东西,对自定义View不熟的同学可以先去学习下怎么自定义View(其实很简单,新手不要怕),然后再去实现一些看上去挺棒的效果。 总结 嗯,大致就是这样,对于公司这些动画的需求我只想说其实你想要咋弄,都是没问题的,最重要的就是时间!本身其实最后留给开发人员的时间就不多,然后如果还要加各种动画,那不是天天加班的节奏么~ 下载地址: https://github.com/Blincheng/RecordView 本文转自 一点点征服 博客园博客,原文链接: http://www.cnblogs.com/ldq2016/p/6692322.html ,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册