各位看官老爷子你们好,我就是那个挖坑不埋,还喜欢开新矿的小喵同志。

 问大家一个问题,在Github上找项目的时候,看到中文简介说明你们是不是觉得这个项目很low不屑一顾?

 最近朋友无意中说,在Github上看到中文的项目点都不想点进去,太low了。想想好像很多大神的项目都是纯英语的,so,作为只有四级程度的小同志,我就是那个项目里弥漫着中文的家伙(ノQ益Q)ノ彡┻━┻,你们怎么看?我挺喜欢中文的。
 
例牌Github:https://github.com/CarGuo :欢迎各种姿势的star,fuck,watch。

 这期要聊的是那么躺在坑里的需求,想想这一路走来,本人还能正常的行走于人世,真是好感动呢,感谢产品和QA的不杀之恩。

  • 1、TextView的由于Span导致省略号显示不正常问题。

  • 2、TextView容易被背景同化看不清?增加阴影吧。

  • 3、启动白屏一会或者点击logo卡顿很久没反应的暴力解决。

  • 4、打开自定义图库,选择图片容易OOM,页面崩溃回到程序crash。

  • 5、ViewPager嵌套RecyclerView还有轮播图的手势冲突,参考:linkagescroll。

  • 6、透明主题会导致手机背景在切换Tab的时候穿透到桌面,一般MainActivity不要用这个。

  • 7、ViewPager的实时数据刷新。

  • 8、CardView 慎用,因为在某些低版本的机器上会有白带,需要的话可以用shape实现圆角。

  • 9、图片压缩安利。

  • 10、RecyclerView的回到顶部的优化。

1、之前分享过一篇文章《文本编辑和显示(emoji表情,@某人、链接高亮点击)》,这里用到的Spanable替代String用于TextView的显示,一般情况下是没什么问题的,但是如果你需要在列表中或者详情中做省略号处理,你就有可能发现,省略号居然出现在表情的前面,把一大段文字给省略了;又或者直接最后面显示了一部分的表情。原因Google可阅,这里就说说我农村式的做法吧:

 是的,自己截断,根据你需要的行数,对应的在显示的时候把数据截断,然后自己加上···(这里如有更好的记得评论分享啊!)

textView.setText(spannable);
textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);if (textView.getLineCount() > lineCount) {int endOfLastLine = textView.getLayout().getLineEnd(lineCount - 1);if (endOfLastLine > 4) {CharSequence newVal = textView.getText().subSequence(0, endOfLastLine - 4);textView.setText(newVal);textView.append("...");}}}
});

2、TextView经常会因为背景图片的原因而导致出现看不清文字的情况,这里无数次考虑之后,决定某些特殊地方可以用轻微的阴影解决。

android:shadowColor="#AA000000"
android:shadowDy="1"
android:shadowRadius="1"

3、启动页问题,其实最好是做冷启动优化,但是作为一个时间紧(tou)张(lan)的程序猿,我是在WelcomeActivity的主题里设置了主题,暴力解决,虽然这不是长久之计:


4、打开自定义图库OOM主要要解决的还是内存释放的问题,有时候内存一下子来的太猛还是不行的,而且逻辑有问题的崩溃导致APP直接回到解放前的确得不偿失,所以呢:

 直接把选择Activityyoga新的process进程打开,这样闪退了也不影响APP啊,数据该怎么返回还是怎么返回。什么?首次启动的时候回卡白屏几秒,下面的主题暴力帮助你。什么?打开卡顿一会才能看到页面。我试了微信也会,所以如果有优化的控件记得评论分享下,这样我可以愉悦的去找产品说(zhuang)教(B)。


···

 
5、更新ViewPager,这里简单上代码,感受下,我就静静的不说话.....((/- -)/:

 resolveViewLogic();//比如更新list数据fragmentPagerAdapter.setUpdateFlag(true);//让其更新fragmentPagerAdapter.notifyDataSetChanged();fragmentPagerAdapter.setUpdateFlag(false);//关了···
public class RefreshFragmentPagerAdapter extends FragmentPagerAdapter {private List fragments;private FragmentManager fragmentManager;private boolean updateFlag;public boolean isUpdateFlag() {return updateFlag;}public void setUpdateFlag(boolean updateFlag) {this.updateFlag = updateFlag;}public void setFragments( List fragments) {this.fragments = fragments;}public RefreshFragmentPagerAdapter(FragmentManager fragmentManager, List fragments) {super(fragmentManager);this.fragments = fragments;this.fragmentManager = fragmentManager;}@Overridepublic Fragment getItem(int position) {return fragments.get(position);}@Overridepublic int getCount() {return fragments.size();}@Overridepublic CharSequence getPageTitle(int position) {return "";}//让其更新@Overridepublic int getItemPosition(Object object) {return POSITION_NONE;}//核心方法@Overridepublic Object instantiateItem(ViewGroup container, int position) {if (updateFlag) {//根据需求添加更新标示//得到缓存的fragmentFragment fragment = (Fragment) super.instantiateItem(container, position);//得到tag,这点很重要String fragmentTag = fragment.getTag(); //这里的tag是系统自己生产的,我们直接取就可以//如果这个fragment需要更新FragmentTransaction ft = fragmentManager.beginTransaction();//移除旧的fragmentft.remove(fragment);//换成新的fragmentfragment = fragments.get(position);//添加新fragment时必须用前面获得的tag,这点很重要if (!fragment.isAdded()) {ft.add(container.getId(), fragment, fragmentTag);ft.attach(fragment);ft.commit();}return fragment;} else {return super.instantiateItem(container, position);}}
}

9、图片压缩安利:Luban,压缩效果真的不错,和微信一拼,就是那种长的离谱的图片压缩后效果不佳,其他都很不错,反正我是直接把里面的thirdCompress拿出来套到自己里面。

private File thirdCompress(@NonNull File file)

10、RecyclerView的回到顶部的优化。

 也许你会问,不就是一键回去么,为什么还要优化?
 
 因为爱情,不会轻易悲伤,产品经理都是年轻的模样,看看回到顶部的效果,所以就有了这个优化:

 记得先停止滚动,然后回到第十个,然后在智能的滚到顶部,不信你试试,感觉舒服好多哟。

protected void goToTop() {mRecyclerView.stopScroll();mLayoutManager.setSmoothScrollbarEnabled(true);if (firstVisibilityPosition > 10) {mLayoutManager.scrollToPositionWithOffset(10, 0);}mRecyclerView.smoothScrollToPosition(0);firstVisibilityPosition = 0;
}

Android 蹲坑的疑难杂症集锦一相关推荐

  1. [Android问答] 开发环境问题集锦

    [Android问答] 开发环境问题集锦 工欲善其事,必先利其器. 和iOS开发相比,Android的开发环境的版本比较多,随之而来的问题也多.显然,我们不应该浪费宝贵的时间在解决开发环境带来的问题上 ...

  2. Android常用名令集锦(图文并茂)!

    大家好,今天我们要讲的是android开发中,比较常用的名令集锦, 在我们开发中难免用到Android命令,有些确实命令确实很有用处. 特别对于一些初学者来说,命令根本没有想过用也不会用,比如他们想安 ...

  3. Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!

    大家好,今天我们要讲的是android开发中,比较常用的名令集锦, 在我们开发中难免用到Android命令,有些确实命令确实很有用处. 特别对于一些初学者来说,命令根本没有想过用也不会用,比如他们想安 ...

  4. 整理:Android apk 框架 布局 集锦

    2019独角兽企业重金招聘Python工程师标准>>> 看到好的技术教程就想分享一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究(^o^)/~ 友情推荐<爱加密>Android ...

  5. NXP Pico i.MX7D上安装Android Things系统疑难杂症汇总

    Android Things在NXP Pico i.MX7D上刷机的正常步骤还是很简单的,不过也陆续有不少朋友碰到各种问题.这里把问题和解决方法做个汇总,有新问题再继续补充.碰到问题的朋友,也可以在文 ...

  6. android学习中常见问题集锦

    所罗列的问题仅仅是自己在学习开发中的一些常见问题,记录下方便日后参考. 1.Eclipse+ADT进行Android应用程序的代码混淆和签名 2.四大组件介绍 3.alertDialog按钮不显示的b ...

  7. android面试经典,Android经典面试题集锦(一)

    1.描述你知道的Android机型适配方案: 答:1.Linearlayout的weiget属性:2.res目录下自定义各种不同机型尺寸的values包中的dimens.xml文件:3.今日头条开源的 ...

  8. Android开发工具类集锦

    概述 本人做android开发已有段日子了,在开发的过程中一直使用着工具类,包括别人已经封装好的工具类以及自己封装的工具类,本篇博客向大家介绍自己在开发过程中经常使用到的一些简单实用的工具类,在文章末 ...

  9. Android开源库项目集锦

    一.兼容类库 ActionBarSherlock : Action Bar是Android 3.0后才开始支持的,ActionBarSherlock是让Action Bar功能支持2.X后的所有平台, ...

最新文章

  1. java程序设计 徐红_Java程序设计-徐红 王灿
  2. Sql—表格的建立,删除,数据的建立与删除-总结篇
  3. C/S、B/S的区别
  4. React开发(164):React中this.props.children续集
  5. idea报错命令行过长
  6. windows和linux文件输 - ftp
  7. 学习资料(干货汇集)不断更新【更新于2017-9-17】
  8. opencv检测相交点_OpenCV学习18--霍夫变换检测直线
  9. c#读取csv到数组_C#读取CSV文件的方法
  10. Linux-----信号量
  11. 架构思维成长系列教程(十)- 电商搜索引擎架构设计
  12. jetson nano 人体姿态识别
  13. error Code:410 Error Message:appid and openid not match 威富通技术支持,兴业银行微信支付接入支持
  14. ansible 变量
  15. PCI驱动学习总结-国嵌视频
  16. 电信手机手机最快服务器是哪个,移动、电信、联通4G上网速度,哪家速度最快?...
  17. html图片自动在div里放大,HTML5+CSS3实现图片的放大/缩小
  18. 12-Gateway新一代网关
  19. 使用appium进行app自动化测试时遇到AppActivity设置正确但报Connect Appium Server Fail.A new session could not be created
  20. 基于Android的校园跳蚤市场(二手)的设计与实现

热门文章

  1. 网上预约挂号系统代码_速看!全国民族运动会部分竞赛项目观众网上预约系统正式上线了...
  2. 被替换的项目不是替换值长度的倍数_面试官,为啥HashMap的长度是2的n次方?
  3. github上传本地项目_提交本地项目到GitHub
  4. mysql不存在就批量新增_mysql批量插入,存在则修改,不存在则插入
  5. python中常见的内置函数_Python常用内置函数总结
  6. zabbix setup.php出错,apache配置zabbix下setup.php无法显示
  7. mysql函数时分秒转换_mysql函数 秒转换成时分秒
  8. php 隐藏的id,隐藏你的 ID 吧!
  9. html怎样同框架页面内跳转,使用iframe框架时,实现子页面内跳转到整个页面,而不是在子页面内跳转...
  10. oracle语句取字段前2位,oracle截取某一个字符之前或之后的值;substr();instr()