-
android01
-
前面一篇文章中我们讲解了android里面的多渠道打包,对于大型的app来说,几百个上千个渠道包都是很正常的事,所以效率定制化是一件很重要的事。主要讲解了三种多渠道打包方式,并分析了其各自的利弊,在各自产品多渠道打包的时候,可以根据自身的产品需求选择相应的打包方式。而本文主要讲解Apk的混淆,这里的混淆分为两种代码混淆和资源文件混淆。实际的产品研发中为了防止自己的劳动成果被别人窃取,混淆代码能有效
-
android01
-
国内的Android开发者还是很苦逼的,由于众所周知的原因,google play无法再国内打开,所以android系的应用市场,群雄争霸,而后果就是国内存在着有众多的应用市场,产品在不同的渠道可能有这不同的统计需求,为此android开发人员需要为每个应用市场发布一个安装包,这里就涉及到了android的多渠道打包。本文主要讲解的就是几种主流的多渠道打包方式,以及其优劣势。通过配置gradle脚
-
android01
-
随着移动技术的深入发展,各种炫酷效果的更新,在我们追求UI与UE的同时一个不如忽视的问题逐渐暴露出来,那就是apk文件越来越大,可能有的童鞋会说现在都是wifi环境,apk文件增大几M不是什么大不了的问题,这其实也是有一定道理的,但是作为开发人员的我们这绝不是我们认为可以忽略这个问题的理由。优化Apk大小也是优化我们App体验的一个重要方面,虽然可能它不是那么的重要。那么到底是那些原因让我们的Ap
-
android01
-
在上一篇文章中我们介绍了在android产品研发过程中,启动页的优化工作,比如启动页性能优化,启动页渐进动画效果,启动页屏蔽返回按键等等,而在本文中我们将要介绍一下在App产品研发中都会复写的基类Activity。在实际的android产品研发中,一般的我们在写Activity的时候都会继承于一个基类Activity,该Activity是所有的Activity的基类。在该基类中我们主要用于重写一些
-
android01
-
上一篇文章中我们介绍加单说明了一下android的编码规范,这里我是强烈建议大家在团队合作中约定编码规范的,哪怕是一个并不是十分规范的规范总比没有规范好得多,尤其是团队产品的研发,对产品的持续迭代过程中你会越发的意识到编码规范对产品迭代的好处,当然了,这里并不是要求大家一定按照文中给出的编码规范作为团队中使用的编码规范,而是希望大家在团队合作中能够约定出自身的编码规范,哪怕其并不是十分的规范。而这
-
android01
-
从这篇文章开始我们暂停一下对android源码的分析,开始讲一下android产品研发中一些常用的技术,技巧,方法,实践等姿势。这里需要强调的是我们所讲解的这些东西可能对产品开发中比较常用的,因为对于项目开发中,可能更多的强调管理,进度方法的东西,对工程化的东西比较强调,而我们这里更多的是对产品技术方面的归纳总结。而本文中选择将开发规范作为这个系列的第一篇文章,就是个人感觉产品研发过程中,开发规范
-
php
-
手机Api开发的时候用 dingo-api 的异常处理会出现 一些 http的 400, 401, 402等错误,前端不好处理,可用下面的方案
接管Dingo-api的错误
如上图所示,AppServiceProvider.php中的register()方法中添加如下代码
\API::error(function (\Illuminate\Validation\ValidationExcep
-
android00
-
本来是想围绕着HttpClient讲解的,后来发先Android4.4之后okhttp代替了hc,所以将不再讲解hcokhttp的简单使用,主要包含:一般的get请求一般的post请求基于Http的文件上传文件下载加载图片支持请求回调,直接返回对象、对象集合支持session的保持GitHub地址OkHttp的GitHub地址是:OkHttp依赖库导入使用前需要先在项目中添加OkHttp的依赖库,
-
php
-
Access Control Filter(ACF) :访问控制过滤器,是一个简单的鉴权方法,很适合只需要简单访问控制的应用程序使用。ACF 是一个动作过滤器,可以被当做一个行为附属到一个控制器或一个 module 中。ACF 将通过检测访问规则集合(access rules)来确定用户是否可以访问被请求的动作。useapp\libraries\filters\AccessControl;
-
zixun
-
年轻代表什么?热情,潮流,好奇心,还有想象力——我们可以给年轻人贴上很多标签,但其中有一个标签,它和每个时代的年轻人都关联紧密,并被社会学和商学作为研究的重点之一。那就是“未来”。我们相信习惯的力量,相信成长中形成的印记,有些会伴随终生。我们相信消费不仅仅是一时的决策,它背后有更多复杂的原因,和历史继承——在某种程度上看,每一次消费,都是需求和人性的双重投影。因此,在今天我们去研究和探寻年轻人的消
-
android
-
Android WebView 获取网页的title,可以通过两种方式获取方法一 、 onPageFinished函数//如果不设置WebViewClient,请求会跳转系统浏览器
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoadin
-
littleGG
-
概述UISlider用于从连续范围的值中选择单个值的控件。当您移动滑块的大拇指时,会将其更新后的值传递给附加的任何动作。滑块的外观是可配置的; 您可以对曲目和大拇指进行着色,并提供出现在滑块末端的图像。属性和方法初始化方法let slider = UISlider()slider.frame = CGRect(x: 50, y: 100, width: 200, height: 50)指定附加到滑
-
littleGG
-
概述UIScrollView允许滚动和缩放其包含的视图的视图。属性和方法初始化方法let scrollView = UIScrollView.init(frame: CGRect.init(x: 0, y: 0, width: view.bounds.size.width, height: view.bounds.size.height))设置偏移量scrollView.contentSize =
-
android00
-
现在APP中用到H5页面的越来越多,而如何正确获取WebView的网页title是必须要考虑的。网上能查的大部分方法都是在WebChromeClient的onReceivedTitle(WebView view, String title)中拿到title。但是这个方法在网页回退时是无法拿到正确的上一级标题的,网上的处理方法是自己维护一个List去缓存标题,在执行完webView.goBack()
-
android00
-
Map一般用来保存具有映射关系的数据,Map里保存着两组数据:key(键)和value(值),它们可以是任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。遍历方式一、当键和值都需要用到时所采用的方法。Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Ma
-
android00
-
前言整理功能,把这块拿出来单独做个demo,好和大家分享交流一下。版本更新这个功能一般 app 都有实现,而用户获取新版本一般来源有两种:一种是各种应用市场的新版本提醒一种是打开app时拉取版本信息(还要一种推送形式,热修复或打补丁包时用得多点)这两区别就在于,市场的不能强制更新、不够及时、粘度低、单调。摘要下面介绍这个章节,你将会学习或复习到一些技术:- dialog 实现 key 的重写,在弹
-
android
-
1,错误描述今天在Android Studio中,运行程序的时候,出现了如下所示的错误:Timeout waiting to lock artifact cache (/Users/zhuxiaocheng/.gradle/caches/modules-2). It is currently in use by another Gradle instance.
Owner PID: 17358
-
android00
-
代码如下:(对应的类:android.content.ClipboardManager)protected void copyStr(String text){
//获取剪贴版
ClipboardManager clipboard = (ClipboardManager)getActivity().getSystemService(Context.CLIPBOARD_SERV
-
android00
-
清除glide的缓存 在进Activity时的onCreate()里执行缓存清理1, 清除硬盘缓存Glide.get(this).clearDiskCache();2,清除内存缓存Glide.get(this).clearMemory();
-
android
-
Glide是谷歌推荐的一款加载图片的第三方框架,对内存优化更好,更省资源,它的优点,我就不一一描述了,有兴趣的朋友可以百度一下,介绍的还是挺详细的。今天主要给大家介绍一下关于怎么获取Glide的图片缓存和清除图片缓存,其实很简单,下面是写的一个工具类,简单易懂,便捷好用!packagecom.jiluo.paipai.util;
importandroid.content.Context;