![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android基础
公贵买其鹿
我愿意相信,然后去发现
相信爱情,发现你
相信努力,成为更好的自己
展开
-
一些对JNI的初步理解
这篇博文的目的:首先是记录下来,方便自己日后查阅;其次是在我查阅JNI的资料时,感到很大困惑,我总是感觉写相关的博客的那些大牛们都是有不少C或者C++基础的,所以像我这样的菜鸟阅读理解起来就有点困难,把自己的想法和困惑写下来,说不定可以帮到和我差不多的人。因为内容是边学边写,可能有点乱,望见谅! 个人理解的执行流程(仅仅是个人理解,不明确是否为真实过程,希望不要带来误导):原创 2015-12-11 14:25:30 · 874 阅读 · 0 评论 -
毫秒值和日期格式互转
获取系统当前时间: private void setDate() { //获取系统当前毫秒值 long currentTime = System.currentTimeMillis(); //构造方法内可以自定义显示格式 SimpleDateFormat dateFormat = new SimpleDateFormat原创 2016-04-29 14:27:04 · 7303 阅读 · 0 评论 -
解决Android Studio项目bundle文件夹下没有release
月底了,不写一片凑够四篇,持之以恒勋章就没了。 这个问题应该是你想用AS打jar包出现的。 其实就是没走到这里,原因可能就是着急的新建了Library工程的Module后,没有将Library module添加到主module中。 一:主module右键 --> 倒数第二个Open Module Setting--> 上面最后一个选项Depen原创 2016-05-26 13:59:30 · 7425 阅读 · 4 评论 -
Android隐藏应用图标,简单到哭
去掉主页面的下面标签: 你的应用个图标就看不见了,当然,隐藏是为了自己调用,这要搞的应用就无法启动了。 然后你可以给activity配置个什么的,它就又可以通过其他的方式启动了。原创 2016-05-04 16:00:43 · 8375 阅读 · 0 评论 -
RecyclerView设置OnItemClickListener的方法
RecyclerView很强大,很暴力,但是没有一系列的点击事件,如下图是RecycleView结构中的所有set开头的方法: 其中有个setRecyclerListener貌似可能是,但它其实是重复利用布局时的监听器,跟点击类事件没关系。 到了这里,也就是说我们想要的点击、长按等事件需要我们自定义了。 这个自定义我们认为写在Ada原创 2016-06-07 17:50:52 · 7920 阅读 · 0 评论 -
Android Studio项目精简结构,瘦体储存
之前项目文件要存档,整体文件大概有80多M,好大啊,存储起来太浪费空间了,于是想如何将项目文件处理的越小越好。 在技术群里问,大家也明确的没有答复。他们说他们的项目有几百兆的,我擦,好恐怖。虽然这么来说我的算是体积小的了,但是它真的只是个小demo,不至于80多M。似乎github下载的开源项目从来都很小,几十兆都是不小的项目了,所以猜测肯定有办法! 然后我就百度关键字“Android Studio项目结构精简”、“Android Studio项目去除冗余”等等,总体说是有收获的,可却不是我要找的信息。原创 2016-03-11 13:56:33 · 2453 阅读 · 0 评论 -
Android序列化:Serializable和Parcelable
首先说Serializable,源自JavaS,它是一种标识接口,继承它的类无须实现什么。Java会通过反射对其实现类进行高效的序列化操作,所以用着很简单。 缺点:既然是反射,那么它的过程就会较慢,这种机制会在序列化的时候创建许多的临时对象,容易触发垃圾回收。 还有AIDL不支持Serializable。 而Parcelable是And原创 2016-07-04 10:17:56 · 958 阅读 · 0 评论 -
PopupWindow思路和显示方式的详解
记录啊,记录 如果你熟悉AlertDialog的使用,那么PopupWindow也就可以轻车熟路了,它们在有些方面是很相似甚至想通的。 步骤顺序:1.声明一个PopupWindow对象。2.获取一个布局layout(通常是View对象),大多是通过inflater拿到的(和自定义Adapter中的getView()有99%的相像)。3.初始化1的对象,初始化时需要传入一原创 2015-12-16 14:53:49 · 1357 阅读 · 0 评论 -
Android自定义View(一)关于super、this和构造方法
其实我发现个问题,我写的博客都是我边学变写的,当回过头来再看之前的博客,感觉总是:这特么写的什么玩意了!所以,感谢你能看我的博客,虽然有点糟糕。 进入主题,先说this关键字。 这个关键字用的还是挺多的:Activity中的Context对象、实现的接口、冲突命名时指定成员变量;实体类中setter方法指定成员变量;指代不同参的构造方法;public原创 2016-08-17 12:15:21 · 7491 阅读 · 1 评论 -
Android自定义View(二)画一个表
书接上回:Android自定义View(一)关于super、this和构造方法 这篇自定义个表盘的CustomWatchView给大家瞅瞅,主要是会说到Canvas和Paint这两个东西。 先上个图看看效果,大概写了不到150行代码: 这里大概分成两步:1是获取属性值;2是按照属性值绘图; 如果不需要在xm原创 2016-08-17 16:59:24 · 1019 阅读 · 0 评论 -
Android自定义View(三)柱状图
杂七杂八,自己完成了一个自定义柱状图的实现。因为有前面画过一个手表的些微经验,这次开始的过程还是挺顺利的,后期遇到的最大问题就是画布旋转后找位置这个过程,简直要命。而且前一篇正好巧妙的规避了这个问题所以没注意到。 主要用了两个类,一个数据模型类和一个自定义View的类。 先放效果图,然后直接上代码。 竖屏: 横屏:原创 2016-08-31 13:32:24 · 1218 阅读 · 0 评论 -
Android获取屏幕长宽
从来源上讲,获取屏幕的长宽有两种途径。一是WindowManager(以下简称WM)拿到Display对象;另一个是通过DisplayMetrics对象。 1.Display对象,这个途径在高一些的版本里是过期的,下面我也加上了删除线表示//this是context对象WindowManager wm = (WindowManager) this.getSystem原创 2017-01-17 11:55:52 · 819 阅读 · 0 评论 -
RxJava使用初级
说一下感受:自从用了RxJava,我都忘记AsyncTask和Handler怎么用了。据几个大神说,RxJava牛在它的变换上,但是对于一个要开始接触RxJava的程序猿来讲,完全是不着边际的东西。最初让我最关心的,是它在线程上使用的方便性。最简单能使用到的,也是最快入手的,就是使用RxJava来管理线程的事。当然了,RxJava会明显的提升代码量(行数),同时也能显著的简化逻辑结构。一入原创 2016-04-25 11:51:17 · 891 阅读 · 0 评论 -
MVP前奏(二)MVC在Android的小短腿
首先,这是我的一家之辞,做个参考就好。这个作为MVP的前篇,就是说一下MVC在Android中的不足之处。 在Android中,M这个好说,它是面向对象的产物,它就是抽象出来对象,程序员在程序里可以有很多对象(是对象,不是女朋友!),在说白了就是个表示数据结构的类。在MVP和MVC中几乎没差别。 V这个模块,因为Android代码的特性,activity作为活动会表现在最上层,原创 2016-03-11 17:52:59 · 701 阅读 · 0 评论 -
转战Android Studio 三
转战Android Studio 三 AS的提示是首字母大小写敏感的,这个问题在最开始的时候好坑爹啊!由于还从eclipse换过来,所以感觉那个不连续字母提示感觉不是用处很大。说几个常用的快捷键:★ AS:ctrl+Alt+M ====== eclipse:Shift+Alt+M 将一段代码提取成一个方法; AS:Alt+Insert ====原创 2015-12-29 13:18:25 · 905 阅读 · 0 评论 -
跨应用数据提供的解决:ContentProvider和ContentResolver
看到这里的时候咱们假设满足一下一个或几个前提:⑴你看过别人的博客,但是对实际应用还是有些迷惑:⑵或者你对大概流程似乎有一点理解,但还是不明了;⑶你干脆就是懒,只想用一下,懒得去理解 1~3的内容是比较死的套路,但是内容灵活1.先从Manifest开始说,如下图: 新建ContentProvider的类是要在manifest里面注册的,当然,因为它也是原创 2015-12-14 16:08:52 · 1243 阅读 · 0 评论 -
转战Android Studio 二
转战Android Studio(二)新建Android Library安卓中新建Library工程和新建普通Android工程一样,只需要在新建的过程中勾选Library项(如图1),或者在已有项目右键选择properties->Android ,然后勾选 is library(如图2) 图1图2接下来在需要引入Library的工程上右键在菜单底部找到打开pr原创 2015-12-16 17:12:51 · 958 阅读 · 0 评论 -
关于onTouch事件的一些归纳和理解
记得最早有一次做长短点击的时候,出过一次错误,修改了OnLongClickListener里面的返回值,导致长按事件触发后同样会触发点击事件。纳闷了好久也没明白,就是稀里糊涂的改了返回值,然后正常了。前几天做一个按钮的点击动画,想偷懒,如果在drawable中像selector一样能配置就好了,结果不能的(我真是异想天开,哈哈哈);然后只能找个触发时机了:onClick要放手才行,onLong原创 2015-12-18 11:24:26 · 1346 阅读 · 0 评论 -
Android简单交互,点击控件时短暂的放大后恢复正常
原理:监听控件的事件,在touch事件触发是播放放大动画;说明:在onTouch()事件中,动画的播放要放在对DOWN事件的处理中,不能简单的放在onTouch()的方法里面里了事,那样会有一个多次不均匀触发的bug;动画放在OnClick方法里也勉强可以,但是有个问题,它在手指抬起时才触发,如果有这样特殊需求的话倒是可以,不过应该很少吧。MainActivity代码:priv原创 2015-12-18 17:41:55 · 3094 阅读 · 0 评论 -
关于去除Demo中的广告相关
说点自己关于去掉Demo中广告的办法。广告这件事,怎么说呢,也好也坏:好处吧:人家分享了一个好的例子,获取点流量也说得过去,算是对作者的一个回报吧;坏处:有的广告太TM烦了,几秒出一次全屏广告,点一次返回还不消失。我个人的经验是从以下几个点:1.直接在Libs下面把广告的jar包删掉,哪里报错处理哪里就哦了,但是有时广告的包名不确定, 不敢删;2.广告基本都原创 2015-12-07 15:40:22 · 1179 阅读 · 0 评论 -
String 和List<String> 的互相转换
有时候为了方便数据的存储和传递等,需要把List 转换成String ,然后又需要还原,所以把方法记在博客里,方便自己查找。List 转换成 String :迭代List的每个子项,将他们用“,”隔开,拼接最好是要用StringBuilder 或者StringBuffer 来完成,当然"String+=" 也是可以的: publicstatic Strin原创 2015-11-25 14:30:08 · 96674 阅读 · 6 评论 -
在CSDN博客里保持代码格式的方法
新手肯定能遇到的问题,刚刚开始写博客时自己粘贴的代码参差不齐,别人的确工工整整,于是搜了以下解决办法:方法一:按语言插入如图,在编辑器里点击代码页有“方法二:源代码模式下使用textarea>标签点击上图那个图标切换到源代码模式,在你要插入代码的地方加上下面两行标签class对应的值改成自己代码的类型 在这个标签的中间粘贴原创 2016-02-16 16:05:23 · 2033 阅读 · 2 评论 -
自定义对话框AlertDialog.getWindow().setContentView(view)是EditText无法输入
这个setContentView(View)的方法在原理上设置了限定,该是默认情况下隐藏软键盘的方法,要重新显示软键盘,要执行下面这段代码:dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);完整点的使用代码: final LinearLayout dialogLayout =原创 2016-02-23 18:05:26 · 3854 阅读 · 1 评论 -
Android数据库Realm学习(一)基本使用
Realm 是一个移动开源数据库,可运行于手机、平板和可穿戴设备之上。可以让你的应用更快速,带来难以想象的体验。其目标是为了代替 CoreData 和 SQLite 数据库。原创 2016-03-03 16:18:18 · 15929 阅读 · 3 评论 -
MVP前提(一)接口
目录结构图:定义的四个接口截图:IListenIRead:ISpeek:IWrite:学生A的代码:package student;import interfaces.IListen;import interfaces.IRead;import interfaces.ISpeek;import interfaces.IW原创 2016-03-10 19:30:00 · 1434 阅读 · 0 评论 -
emulator: ERROR: x86 emulation currently requires hardware acceleration!异常问题解决
AS配置模拟器后启动报这个异常:emulator: ERROR: x86 emulation currently requires hardware acceleration!因为需要一个intel的硬件加速器,解决检查三个步骤 1、检查SDK Tools中的Intel x86 Emulator Accelerator(HAXM installer)是不是安装了; 2、到sdk\e...原创 2018-08-17 14:45:21 · 32454 阅读 · 19 评论