自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 安卓架构师成长之路——前言篇(1):如何年薪50万

毕业最开始的几年,一直在外包和小厂,月薪不过一万几,做的项目小而简单,对高性能和架构要求不高,不看重新技术。厂房人小又扁平,没什么晋升之路,加薪幅度又慢,跳槽又不知道怎么稳扎稳打,苦无前进之路。 直到后来,加入了个程序员大牛的群。 认识了不少阿里腾讯美团字节的一线大厂的大牛,看了他们分享的技术和学习博客。技术豁然开朗,既不用为了以后的晋升之路忧愁,更不用上着**加量不加薪**的工作,担忧35岁以后是送外卖还是跑滴滴。后来不负众望,已经转型成功,现在心里面已经很明确,循着这条路好好努力,至少是名还算合格.

2020-08-15 23:15:20 286

原创 安卓架构师成长之路——Java深入篇(1):泛型深入

Java架构基础- 泛型泛型的使用泛型的好处泛型的声明如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入泛型的使用你好! 这是你第一次使用 泛型 。泛型基础是学...

2020-08-15 22:05:14 176

原创 最全的注解相关知识以及应用,持续更新...

注解简介**Java 注解(Annotation)**又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。结合反射,Ide检查,APT,字节码增强等技术可以实现其功能,单独存在则仅仅为标记作用。要熟悉注解,就必须先熟悉元注解和内置注解。元注解 元注解是可以注解在注解上的注解。元注解共有5个, 其中最为重要的是@Retention和**@Target**,前者规定了注

2020-05-12 13:34:00 178

原创 Android 9 AAPT: error: resource xx not found.

Android 9 AAPT: error: resource xx not found.在项目中写完drawable后突然发现了这个错误, 但是在其他版本的手机上跑反而没有。 后来研究了大半小时,后来终于发现原来是我在一个相关的布局里面多写了一行这句<?xml version="1.0" encoding="utf-8"?>然后布局成了这个样子:<?xml versio...

2019-05-28 17:20:57 4466 1

原创 textview去除内边距

android:includeFontPadding=“false”

2018-05-03 17:28:28 398

原创 vm安装虚拟机 android studio

项目中有个开源项目,可能是用到了ndk, 一直没有办法build成功,后来 尝试用linux 1安装虚拟机vm2安装AS3安装JDK4配置环境变量通常情况下,/etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的。要修改profile,需要取得root权限,(使用gedit编辑)应该如下:$sudo gedit /etc/profile或...

2018-05-03 17:27:46 3801

转载 富文本相关

需求: textview 设置超链接 并且可改颜色:str 直接写链接网址就ok注意:不要在xml配置android:autoLink属性SpannableString sp = new SpannableString(str);//这句很重要,也可以添加自定义正则表达式Linkify.addLinks(sp,Linkify.ALL);//主要是获取span的位置URLSp...

2018-03-28 11:33:46 185

原创 安卓 异步播放在线音乐和离线音乐

项目中需要用到把播放离线音乐设计成可以同时播放在线音乐和离线音乐的. onPrepareAsync 之前弄过,但是内部有很多错误, 所以一直使用onPrepare, 但是因为在网络差的环境中会阻塞线程, 痛定思痛花了心思研究了下,发现可以通过对播放错误进行处理, 结果完美解决.下面是一些代码总结和心得: 点击音乐的时候需要song的集合传入, 这样虽然会播放歌曲但是会打开一个播放队列, 点击随机播

2017-12-28 18:33:10 1215

原创 compileDebugJavaWithJavac

现象: 在AS中进行编译,出现如下错误:Error:Execution failed for task ‘:xxx:compileDebugJavaWithJavac’. Compilation failed; see the compiler error output for details.2 在网上找了几种方案:.1解决: 缺少了一个lib的引用,在iml文件中,加上

2017-12-28 18:00:40 13006 4

原创 GreenDao3.0数据库升级

前期准备1 数据库升级涉及到版本升级, 调试时候可以拷贝旧项目,把旧项目和新项目开两个AS 跑, 作为测试, 签名版本自行导出. 记得要改versioncode2 在原有的项目里 我的OpenHelper是这样写的 public static class DevOpenHelper extends OpenHelper { public DevOpenHelper(Cont

2017-11-21 17:46:06 266

原创 Retrofit集成网络缓存

1自定义拦截器 继承拦截器public class NetworkInterceptor implements Interceptor {//缓存有效时间 private final static int TIME_CACHE_HOURS = 1; @Override public Response intercept(Chain chain) throws IOExcepti

2017-11-21 17:31:40 299

原创 安卓 实现对已知路径文件夹以及文件排序和遍历

思路: 项目需求对已知的音乐路径作排序, 做成window状态的图形操作模式,不过网上似乎没找到. 后来我把这堆集合放入TreeSet ,利用集合的唯一性和TreeSet的自然排序. 对这个String 泛型的Set 分别作split 切割 ,通过判断”/”的第一个字符串 ,把他们放入一个叫pathHeadStringList的集合中. 再建一个FolderBean的实体对象, 内含属性

2017-10-20 10:07:06 695

转载 公钥 和私钥的区别和应用

其实公钥和私钥都可以用来加密或解密—只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。例如说,如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。但是如果你想发布一个公告,需要一个手段来证明这确实是你本人发的,而不是其他人冒名顶替的。那你可以在你的公告开头或者结尾附上一段用你

2017-09-21 15:07:40 5016

原创 自定义toolbar和原生toolbar的比较

使用toolbar的情况和toolbar的优点 必须说明,toolbar使用简单,ui也好看。 home键可以很容易的和drawer联动 通过设置menu item 的展示选项控制overflow列表,这个极为常用 最重要的是,toolbar继承自viewgroup ToolBar可以复用,不需要你编写复杂的xml代码,每个用到的页面include一下就好了,所有逻辑和功能都可以在代码中实

2017-09-20 14:25:04 695

原创 按照图片比例定位文字展示区域代码

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="12dp" android:layout_

2017-09-19 15:28:56 458

原创 EventBus 入门+新写法 再也不用写xxxEvent了和这么多Event类了

首先先写一个BaseEventpublic interface BaseEvent { void setObject(Object obj); Object getObject(); //事件定义 enum CommonEvent implements BaseEvent { /* GO_TO_ALBUMS_PAGE, GO_TO_ARTIST

2017-08-30 10:46:05 842

转载 Mipmap踩过的坑

Mipmap和drawable不同之处在于 使用了 纹理技术 显示launcher_icon ,所以建议图标专门放在mipmap中,另外修改了launcher icon 还是出现旧图标 可能是debug文件夹导致的,mipmap 是一种很早就有的技术了,翻译过来就是纹理映射技术。android 中的 mipmap 技术主要为了应对图片大小缩放的处理,在android 中我们提供一个 bit

2017-08-30 10:27:53 648

原创 安卓include文件踩过的坑

大家都知道include可以引用一个新的布局, 简化代码,提高封装和重用,方便扩展. 但是在项目开发的过程中,会发现一些问题:include最好不要添加不要加weight 等属性给include加上id后 就不能直接获取include里面的id的控件,需要先findviewbyid找到该include的主布局后才能通过这个主布局找到其他布局,也就是需要连续findviewbyid两次

2017-08-30 10:11:25 399

原创 xml资源文件?的含义 以及扩展

Android xml资源文件中@、@android:、@*、?、@+详解一.@代表引用资源 1.引用自定义资源。 完整格式:@[:][/] 有时也写作:@[package:]type/name 表示引用packgage_name这个包中类型为reource_type的叫resource_name的资源。这里的包一般就是framework中的android。 @[

2017-08-30 10:03:04 606

原创 TextView在布局下层依然会覆盖其他Ui解决办法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-08-30 09:43:44 931

原创 项目引用的values报错解决办法

开发项目中, 因为项目内部有个transparent 是9个0的色值, AS只提示是在build/intermediates,不知道怎么都找不到 ,后来自己在values上重新写了个transparent 8个0的色值的颜色属性 覆盖就好了,太奇葩了,mark一下!

2017-08-24 18:26:50 428

原创 toolbar 总结和踩过的坑 , 为toolbar设置字体

getMainActivity().setSupportActionBar(toolbar); 会抹掉toolbar之前设置的navigation的点击事件 要小心 必须在前面写 ,最好只写一次Toolbar一些比较常用的办法:修改导航图标: toolbar.setNavigationIcon(资源文件);修改menu图标: toolbar.setOverflowIcon(getResource

2017-08-24 18:23:24 751

原创 navigationview的样式设置

//字体颜色navigationView.setItemTextColor(ColorStateList.valueOf(Color.WHITE));//图标渲染navigationView.setItemIconTintList(ColorStateList.valueOf(Color.WHITE));

2017-08-24 18:21:13 382

原创 dp和sp的区别 以及字体

一 ttf 和otf的区别OpenType也叫Type 2字体,是由Microsoft和Adobe公司开发的另外一种字体格式。它也是一种轮廓字体,比TrueType更为强大,最明显的一个好处就是可以在把PostScript字体嵌入到TrueType的软件中。并且还支持多个平台,支持很大的字符集,还有版权保护。可以说它是Type 1和ueType的超集。 OTF主要优点: 1)增强的跨平台功能

2017-08-24 17:58:00 1746

原创 实现图片高斯模糊以及高斯模糊布局 (毛玻璃特效)

一图片转高斯模拟:方法的实现: public static void updateBgToBlur(Activity a, Bitmap bmpToBlur, View view, int resId) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inJustDecodeBounds =

2017-08-01 17:06:43 1181

原创 JNI开发最详细最全入门

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-08-01 16:49:31 586

原创 自定义属性入门和详解

declare_styleable 写在attr.xml或者value.xml都行 .相对应的java自定义属性代码行://查找布局文件的styleable中的TypedArraya=context.obtainStyledAttributes(attrs,R.styleable.SlidingPaneLayoutPlus);/

2017-07-06 17:55:27 330

原创 动态设置布局代码完全手册(持续更新)

这里以TextView来举例,  A:TextView的宽和高属性TextView的gravity属性 可以用 mTv的setGravity 来代替(Gravity.CENTER)

2017-07-03 16:39:02 251

原创 textview 属性大全

maxWidth=”80dp” 限制TextView最大宽度。必须与layout_width=”wrap_content”搭配使用,当指定layout_width为其他值时,maxWidth会失效。maxLength=”10” 限制TextView最多10个字符数。汉字、英文、数字都算一个字符。maxLength属性会使ellipsize=”end”属性失效。添加了maxLength不

2017-06-23 11:22:12 458

原创 sendMessage和sendEmptyMessage的区别

看源码 根据参数的不同互相调用 public final boolean sendMessage(Message msg) { return sendMessageDelayed(msg, 0); } /** * Sends a Message containing only the what value. * * @return Ret

2017-06-09 14:54:35 1271

原创 Handler 子线程new Message和obtainMessage的区别

Handler 的用法很简单 ,一般就是创建一个handler字段对象 ,重写方法handleMessage ,  对message.what的值进行选择结构的操作. 然后在子线程中对这个mHandler.sentMessage.不过这里有个问题是子线程的Message实例是直接用new还是obtain在性能上有区别.在处理消息时,message有两种创建方法:

2017-06-09 14:09:24 704

原创 Android5.0使用全透明状态栏

由于项目需求         实现全透明状态栏, 当透明栏是纯色的时候,设置需求所需的颜色.在适配5.0以上项目的时候的标题栏会出现一个半透明的阴影模式遮罩,效果很差. 虽然网上有代码是可以实现上部状态栏透明,但是结果下面的导航栏也透明了,虽然想过读取导航栏高度的方式,但是有些手机没有实体按键, 无奈之下只好摸索window的flag 终于找到以下解决办法:

2017-06-06 15:45:04 1891

原创 Listview的性能优化与viewholder是否需要设置成static

1 使用convertview    作用 避免每次使用inflate 渲染view2 使用viewhold  setTag存储convertview的子控件, 这样减少findviewby Id  过多的findviewbyId会影响性能.在这里,官方给出了解释提升Adapter的两种方法To work efficiently the adapte

2017-06-01 09:40:42 460

原创 实时监听网络状态并刷新当前界面

由于考虑到界面刷新比较麻烦,就只会用startActivity ,我想要做还是可以做出来的,各位朋友如果做出来欢迎在底下分享.1. mainifest注册:  (注意不要再代码中起同样包名的action ,因为动态注册优先级高于静态注册,即非常驻广播优先级高于常驻广播)receiver android:name="com.xxx.broadcast.NetWorkCh

2017-05-19 18:07:14 1787

原创 tablayout修改成自定义字体,自由大小写

项目中需要用到Tablayout 自定义view ,花费了一些时间 ,现在我把方法公布一下,希望帮到大家. View childView = null; for (int i = 0; i mTitles.length; i++) {//把tablayout的默认view换成你想要的布局 mTablayout.getTabAt(i).se

2017-05-18 17:29:29 2548

原创 tablayout增加选择tab 的事件.

tablayout在点击或者滑动的时候会触发监听事件  , 当你调用这个方法的时候 会触发事件mTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) {

2017-05-18 16:41:41 7964

原创 安卓字体设置大全

1自定义字体设置:((AssortHeadHolder) holder).mText.setTextColor(mContext.getResources().getColor(R.color.online_total_genre));view.setTypeface(typeface);2颜色设置(资源文件Color):xml:color name="online_total_genre">

2017-05-16 15:43:17 283

原创 Gson解析,Volley使用,Gson转成Bean 类 _____给你一个json文件的网址, 一秒解析出你想要的参数.

一依赖:二需要的地方注册(比如调用)private RequestQueue mRequestQueue;mRequestQueue = Volley.newRequestQueue(this);String url= "Xxxx你需要访问的url";调用parseJsonAPIToPOJO(url,mRequestQueue);

2017-05-04 14:57:02 538

原创 GreenDao 3.2版本入门 以及实例讲解

一: 依赖app//build.gradle  :apply plugin: 'org.greenrobot.greendao'android{greendao { schemaVersion 1 daoPackage 'com.zgl.greentest.gen' targetGenDir 'src/main/jav

2017-05-03 15:56:35 2572

原创 ViewPager中调用notifyDataSetChanged无刷新最终方案.

通过查找文献和阅读代码发现:  mViewpager.getAdapter.notifyDataSetChanged(); 一直返回POSITION_UNCHANGED. 默认pisition无变化即不刷新.  如果想viewpager在数据变化时候刷新,就需要让itemPosition 返回POSITION_NONE.  但是如果我们不对返回的条件进行判断.就会导致viewpager所有页面

2017-05-02 17:40:57 459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除