分类‘编程代码’

Android软键盘遮挡输入框问题解决

移动APP、网站有界面底部存在输入框的情况,无论是原生还是WebView内嵌,在软键盘弹出时,经常会有遮挡输入框的问题,解决方法就是让软键盘弹出时窗口自适应,而非软键盘直接悬浮,网上看到有三种解决方案:

1、在你的activity中的oncreate中setContentView之前加上如下代码

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

2、在项目的AndroidManifest.xml文件中界面对应的Activity里加入android:windowSoftInputMode="stateVisible|adjustResize",这样会让屏幕整体上移。如果加上的是android:windowSoftInputMode="adjustPan"这样键盘就会覆盖屏幕。 查看更多...

Android Webview增加自定义userAgent、headers

最近维护公司app,要内嵌在线网站进来,因为在线移动网站是类似常见商城的形式,底部有几个导航按钮,而app内嵌的情况想从网页层面控制页面的返回,同时再针对app内嵌情况下的界面做一些控制。

可能前面说得比较晦涩难懂,下面举个例子,比如,页面有12345五个底部导航,默认进首页(1),当点击2345的时候,在android下点击原生返回键还会回到首页(1),这样的效果体验不是很好,所以页面全局拦截a链接,通过js采用location.replace来做跳转,这样一来,只要内部页面没有直接跳回12345五个页面的操作,整体跳转体验应该和app类似了。

另一个问题,要做微信分享,但是众所周知,网页目前是不可能直接分享到微信(除了二维码形式),所以这里在定义了特定协议,网页请求如share://share?title=朴人博客&content=朴人博客…,原生app内接收后解析处理,在webview上弹出分享界面。 查看更多...

Android Studio …aapt.exe” finished with non-zero…解决

升级Android Studio为2.2.2之后,旧项目编译出错,Android编译时出现如下错误

Error:Execution failed for task ':app:processAndroid360XmDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\Develop\Android\sdk\build-tools\21.0.0\aapt.exe'' finished with non-zero exit value -1073741819

搜索良久,很多做法都试了不好使,偶然间发现有人说可能使用JDK8的缘故,果断切JDK7尝试,尝试结果是根本切不回去,Android Studio 2.2.2提示使用JDK 8或者更新的版本。 查看更多...

sudo * 提示 command not found 解决

linux下经常遇到使用非root用户安装软件,使用sudo时提示找不到命令。

比如使用nodejs时候,出现

sudo: node: command not found
sudo: npm: command not found

很多文章说export临时修改环境变量或者直接sudo后chown指定命令所在文件夹的所有者,但是我们通常是在非root用户下使用,所以只需在root用户下增加部分软连接即可 查看更多...

iScroll5实现卡片左右滑动及动态加载

iScroll5是在iScroll4的基础重构而来,使用时发现网上大部分例子都是基于iScroll4,在iScroll5上面并不适用,比如横向滚动、当前索引、元素对齐等,这些不在赘述,有需求可以考虑去看看源码(重构过的源码看起来清爽很多)。

因为自己需要一个卡片左右滑动的效果,同时还希望有边界对齐的能力,不清楚这个效果有没有类似实现,大概看了下,新版iScroll也不是很大,就直接拿来用了,效果如下图所示:

iscroll5-1
查看更多...

安卓Adapter中getView方法重复执行及索引错位问题解决

Android开发中,经常会用到ListView,当然,也会用到Adapter为ListView绑定数据。通常,我们采用继承BaseAdapter并实现getView等方法的方式为ListView渲染数据,ListView中每个元素都会去调用getView做渲染。但是,如果ListView要展示数据非常庞大,创建成百上千个View是不可取的,于是乎,Android为我们提供了一套Recycler机制,可以重复利用已创建的View,降低对象开销。

原理如下:

在一个完整的ListView第一次出现时,每个Item都是null的,getView的时候会跑到需要inflate一个Item的代码段,假设整个view只能最多显示10个item,那么当滑动到第11个Item的时候,第一个item会放入"recycler",如果第11个Item和放入"Recycler"的item的view一致,那么就会使用"Recycler"里面的Item来显示,从而不用再重复inflate一次。

图示如下:

adapter-recycler
查看更多...

简易Express资源合并中间件http-concat

相信很多前端童鞋都见过一些网站有如下url输出js或者css

http://example.com/??script1.js,script2.js,build/script.js

http://example.com/??script1.js,script2.js,build/script.js?v=2016

http://example.com/??style1.css,style2.css,build/style.css

http://example.com/??style1.css,style2.css,build/style.css?v=2016

在以前,使用YUI、DOJO等企业前端库的时候,往往会用到类似功能,最近使用express,搜了下似乎没有类似中间件,索性自己写一个,参数形式参考了阿里的nginx-http-concat(似乎目前大部分有此类功能的网站都是采用阿里的nginx模块实现)。代码如下:
查看更多...

Node应用的进程管理器之PM2

一直以来,没有机会在商业项目、网站上正式用起来NodeJS,说起来挺遗憾的,最近公司网站重构,同时为了配合做些SEO优化,经过一系列筛选后选择了使用NodeJS来支撑前端展现。

在刚接触NodeJS时,也像很多人一样,想问有没有针对NodeJS的热部署方案,后面发现windows下使用nodemon挺好用,但只是简单的自动重载,似乎放到网站上有些不够用,看到翻译后的express官网有介绍进程管理器StrongLoop Process Manager、PM2和Forever,StrongLoop Process Manager是IBM一家子公司维护的,不过国内没见太多人用,大部分都是选择Forever或者PM2(似乎现在PM2使用率更高),对比后选择了PM2。

PM2 是一个带有负载均衡功能的 Node 应用的进程管理器。使用它,可以充分利用CPU多核优势,让你的NodeJS程序完全应用服务器CPU,并且可以保证进程"永远在线",同时,可以实现0秒重载等。

PM2主要特性如下:

1、内建负载均衡(使用 Node cluster 集群模块)
2、后台运行
3、0 秒停机重载,因为带了有负载均衡功能,可以使用pm2 gracefulReload app来实现平滑重载
4、具有 Ubuntu 、CentOS等启动脚本,可以简单实现开机自动启动
5、停止不稳定的进程(避免无限循环) 查看更多...

我为什么选择Nunjucks作为NodeJS模板引擎

最近换了工作,在新的工作中,需要实现后端渲染,故而一改最初的纯html+js形式,选择页面框架、TDK及部分页面后端渲染,由于后台采用java开发,一开始曾考虑另起一个tomcat服务,用于渲染前端页面,而实际搭建完框架后发现,一年多不碰java(期间虽然用过Groovy、kotlin,但实际开发起来还是不如js来得畅快),已经对java的繁琐有些不耐烦,最后转而选择采用NodeJS做后端渲染,一来部分前端模板可以复用(后面发现复用其实是个很纠结的想法),二来做前端开发的兄弟也可以快速上手,相比他们并不懂的java来说,毕竟NodeJS更容易学习接受。

确定了适用NodeJS,下面就确定一下大概框架,采用了目前常见的组合——express+template,因为最初前端使用了所谓最快的模板引擎artTemplate,这里tempate想进行复用,就采用了服务器版artTemplate,实际测试发现并不符合我的需求,由于最近一年使用PHP的YII框架,其中模板layout可以使用block,很方便重写样式、脚本等部分,这里实测后发现,后端模板如果没有layout,基本和写纯静态无异了。 查看更多...

Plupload同请求批量上传问题解决思路

最近在使用plupload的做图片上传时,有同一个请求上传多张图片的需求,而对于选择多张图片的上传,plupload是分开多次请求的,由于之前使用plupload时多是采用选择即上传的方式,所以没有发现。

翻阅源码,发现有如下一段代码。 查看更多...