
android
文章平均质量分 87
KennethYo
耕牛~
展开
-
Android学习笔记(五十):声明、请求和检查许可
基于安全需求,应用对Android系统提供的content provider或者service的访问需要在安装时进行许可,这就是AndroidManifest.xml文件中的permission中声称,之前已经很多例子。同样如果其他应用要访问我们的数据,我们也可以要求这些应用必须获得用户授权方可访问我们的数据。申请授权:请求permission申请许可的格式为uses-pe转载 2013-12-31 17:39:15 · 1245 阅读 · 0 评论 -
介绍MVP Model-View-Presenter在Android中的应用
这篇文章是我学习MVP模式时翻译的,原文是Konstantin Mikheev所写,传送门。 因英语水平有限,翻译的很生硬,基本靠Google,请见谅。以下是译文。这篇文章我会通过一个最简单的例子去一步步介绍MVP模式在Android中的最佳实践。同时我也会介绍一个使MVP模式在Android开发中变简单的library。简单?怎么才能从中获益呢?什么是MVPView层是用来显示数据和相应数据操作翻译 2015-05-25 13:47:35 · 6311 阅读 · 7 评论 -
Android 翻转动画 Rotate3dAnimation 效果
十一前请了一天假,后面请了三天假,串起来一共休息了十二天,这期间见了女朋友的家长,也领女朋友见了我家长,好消息是各方家长反馈不错,坏消息是涨了五斤肉,毕竟是吃了12天的呼伦贝儿牛羊肉哈。玩了这么多天,回来要收收心好好工作了,毕竟要攒钱娶媳妇哈~上班回来,按照产品的需求做了这样一个效果,如下图:这其中包含了3个动画,分别是移动动画、放大动画、旋转动画。前两个动画比较好完成,可以用 TranslateA原创 2015-10-16 17:05:57 · 3217 阅读 · 0 评论 -
Android 可拖拽 GridView 并且实时切换和拖动到下部删除
最近在公司做了一个这样的需求,拖动GridView 中的 item 到指定区域删除,具体效果,请看下面的动图。 拖动效果是通过隐藏 GridView中被选中的 item,并且同时在 Window 上注册一个 View 来实现,具体逻辑和代码,请参照这篇博客http://blog.youkuaiyun.com/xiaanming/article/details/17718579。我的需求当中,多了一个拖动到底部原创 2015-09-29 15:22:08 · 3816 阅读 · 0 评论 -
Android 自定义字体,字替换为图片
不久前开发的版本中有这样一个需求,根据服务器返回的分数,显示分数,各位可能觉得这有什么呢?那么请看下图。 没错,这就是我们的需求。思路一,添加字体库,通过设置 TextView,在初始化的时候设置我们的字体。例如:TextView textView = (TextView) findViewById(R.id.custom);// 将字体文件保存在assets/fonts/目录下T原创 2015-12-03 13:54:59 · 1466 阅读 · 0 评论 -
React-Native Android 学习笔记——2,自定义 logger
通过上一篇《 React-Native Android 学习笔记——1,配置环境》下载了AwesomeProject项目并运行了 demo。如下图: 应该和你运行起来的相同,但是除了Welcome to React Native的颜色。一,index.android.js 文件demo 默认展示在我们面前的这个页面其实是我们下载AwesomeProject项目下的index.android.j原创 2016-03-23 16:35:48 · 1789 阅读 · 1 评论 -
React-Native Android 学习笔记——1,配置环境
一,设备与环境1,一台 mac2,安装软件包管理器 Homebrew(中文)终端里输入/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"进行安装。3,安装 wget 或者 curlwget,终端里输入brew install wget进行安装。 curl原创 2016-03-18 15:30:43 · 4934 阅读 · 0 评论 -
TextUtils方法介绍
把一个List<String>输出成a,b,c这种形式,我们项目里面提供了一个这样的工具类:public static String getString(List<String> list) { if (CollectionsWrapper.isEmpty(list)) return null; StringBuilder sb = new StringBuilder(原创 2016-07-07 17:41:53 · 11675 阅读 · 0 评论 -
高仿SinaWeibo新浪微博发布页面话题效果
最近做了一个仿新浪微博话题效果的功能,网上搜索了几个效果,都存在一定问题,最终借鉴别人的思路,完成这一套效果. 首先,我们拆分逻辑以及开发顺序. 1,首先实现话题变色效果 2,实现插入话题效果 3,实现话题选中删除效果 下面我们就一步一步实现效果.原创 2015-08-10 00:06:33 · 6341 阅读 · 2 评论 -
Mac 下反编译 apk
1,环境准备brew install apktool brew install dex2jar jd-gui2,反编译 代码解压 apk 拿到 dex 文件 执行 d2j-dex2jar classes.dex 获取到 jar 文件,拖进 jd-gui 就可以了3,反编译资源文件执行 apktool d *.apk -f 如果目标文件存在,删除存在 -o 指定目标文件夹名字 -s原创 2016-06-21 11:59:03 · 692 阅读 · 0 评论 -
自建私有 Maven 仓库
项目组从2015年上半年全面切换到 AndroidStudio 进行开发,随着这1年多业务逻辑和代码逻辑的增长,导致项目 LibraryModule 由最初的3个增长到如今的8个。代码量的增加必然导致编译的变慢,AndroidStudio 在编译项目时会先编译 LibraryModule 生成 aar 包,之后这些 aar 包会和 APPModule 进行集成编译,最终生成 APK。这个编译过程,原创 2016-09-01 17:32:27 · 6996 阅读 · 4 评论 -
Travis 和 CircleCI 配置文件
以下都用 BrakeLight 项目举例。Circleci在项目目录中创建 circle.yml 文件,内容如下:machine: java: version: oraclejdk8dependencies: pre: - if [ ! -d "/usr/local/android-sdk-linux/platforms/android-24" ]; then echo原创 2016-11-08 14:59:55 · 3400 阅读 · 0 评论 -
把编译信息放在 Launch Icon 上
首先上一张效果吧!这是我们CI集成测试包后 icon。在icon上分别显示了版本号、build 时间、git id。如何实现的呢?看下面。首先,我们要有 ghostscript 和 imagemagick 两个环境。brew install ghostscriptbrew install imagemagick其次,在编译 apk 之前,执行下面的 shell,就会主动替换为新icon。#!/usr原创 2017-04-05 19:33:49 · 619 阅读 · 0 评论 -
Android 复制和粘贴功能
Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。ClipboardManager mClipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);复制功能,首先要构造一个ClipData对象,并且把要复制的数据和 MIME type 赋值给ClipData,然后在把ClipD原创 2017-08-03 09:16:09 · 8116 阅读 · 0 评论 -
adb logcat 指北
Nexus 5, Android 6.0.1, API 23Log类,相信开发 Android 的同学都不陌生,正如其名,Log类提供了打印日志功能,方便我们在开发调试过程中输出调试信息,输出如下:有大神觉得这样的输出信息不够多,不够美观,不够强大,于是就有了 logger、hugo、timber等 log 工具类。虽然有这些强大的工具来使用,但是你离开了 IDE 还会看 log 吗?下面我们来原创 2017-08-03 09:18:55 · 3353 阅读 · 0 评论 -
Android获取运营商
今天接到一个新需求,要给服务器上送设备运营商名称,之后我的第一反应是,umeng都无法精确统计运营商,我如何判断上送具体的运营商呢?如下图: 这张图里反映了友盟统计到用户手机的运营商名称,这些名称什么样子的都有。有什么办法精确判断具体是什么运营商呢?比如,只返回“中国移动”,“中国联通”,“中国电信”。 我这里解决的方案是通过设备的MCC/MNC代码来判断。 首先,我们要了解MCC/MNC是什原创 2015-05-08 16:40:08 · 6371 阅读 · 0 评论 -
WebView填坑——小功能篇
这两天负责修改了几个关于在webview中打开公司移动站的bug。本身不是很难解,网上查查都有,但是也有必要记录下来作为备忘。Webview中上传文件这里的效果类似在pc端上传文件效果,点击打开一个文件选择器,上传文件图片之类的。 openFileChooser()方法的重载是因为在不同系统中调用的方法参数不一样,具体看注释。 ValueCallback<Uri> mUploadMessage作原创 2015-04-22 16:31:06 · 1795 阅读 · 0 评论 -
多种动画效果
效果图:核心代码:1234567891011121314151617181920212223242526272829转载 2013-12-31 17:32:57 · 1228 阅读 · 0 评论 -
解决TextView自动换行
***Android开发中会经常遇到TextView自动切行的情况,解决办法有两种:*****1,把所有字母、标点、符号、数字全部转换成全角字符,让其与汉字同样占用两个字节。****2,把所有字符,标点,符号换成英文符号。**之前搜索的第二种方法的代码```public static String StringFilter(String str) throws PatternS原创 2013-12-31 18:35:20 · 1801 阅读 · 0 评论 -
关于DatePickerDialog点击返回键取消调用回调方法onDateSet()的解决办法
昨天测试上报了一条bug,内容大概为:在小米2手机中点击生日弹出DatePickerDialog后,修改日期,不点击完成,点击返回键,会修改TextView中的日期。经过分析,代码当中我把处理日期的判断逻辑放在了OnDateSetListener监听的onDateSet()回调方法,当逻辑判断通过,就会修改的TextView当中的日期,这说明当我们点击返回键的时候会调用到onDateSet原创 2013-10-14 23:41:10 · 2711 阅读 · 2 评论 -
应用验签
看到有的同学求应用如何验签(验证签名),这里,我来分享一下我们公司如何进行验签,如果有其他同学有更好的方法,请留言指导,共同进步。首先说下,为什么要系统验签。想必大多数同学们肯定都反编译过android apk吧,也许有的同学还知道有一些小作坊,专门做一些把apk反编译之后加入广告,再次进行打包,投放到市场的工作。这不仅危害了原有开发者的利益,也危害了使用用户的权益。我们要做到的就原创 2013-10-14 23:37:46 · 1821 阅读 · 0 评论 -
用Fragment来代替过期的Tabhost和ActivityGroup
我去年9月份做的一个项目中,主界面也是选项卡这种效果,搭建项目的另一位工程师仍然使用的是Tabhost。最近想起这件事来,便有了这篇博客。(Tabhost和ActivityGroup分别在api 13 和 14 中标记为过期)本篇博客主要介绍如何用Fragment实现Tabhost效果。下图红色部分是RelativeLayout,用来实现Fragment的容器;绿色部分为Rad原创 2014-02-11 13:24:14 · 2749 阅读 · 0 评论 -
自定义TextView实现内容的旋转和偏移
有的时候,设计会要求我们的文字qing'xie原创 2014-05-08 14:10:00 · 6207 阅读 · 0 评论 -
Android文本的测量和绘制
翻译与Chris Banes的博客 原文地址如果你想手动在Android Canvas上画些什么东西,你最好从绘制文本开始。文本绘制之前,你需要知道测量文本的绘制位置,计算文本X/Y轴的位置。翻译 2014-06-23 11:20:50 · 2261 阅读 · 0 评论 -
Android API,版本对照
API等级1: Android 1.0 API等级2: Android 1.1 Petit Four 花式小蛋糕API等级3: Android 1.5 Cupcake 纸杯蛋糕API等级4: Android 1.6 Donut 甜甜圈API等级5: Android 2.0 Éclair 松饼API等级6: Android 2.0.1 Écl原创 2014-08-22 10:51:53 · 1048 阅读 · 0 评论 -
LayoutInflater.inflate详解
###介绍常见inflate方法在日常开发中经常会用到通过资源id去获取view的场景,我们通常有四种方式去获取view,分别是以下四种:```//1,通过系统服务获取布局加载器LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);原创 2014-10-24 16:27:08 · 2380 阅读 · 0 评论 -
RecyclerView初级使用
RecyclerView是Android在v7包中包含了一个新的widget,RecyclerView是一个ListView进阶版,但不继承与AdapterView,相比ListView,RecyclerView更加灵活和先进。1,导入RecyclerView首先要保证SDK Tools和Android Support Repository为最新版。如下图:原创 2014-11-10 15:18:15 · 2624 阅读 · 0 评论 -
博主毕业以来总结的android经验,想起来什么就加点
1,api10以下尽量用padding,margin很多的时候会有bug,显示不出效果2,混淆,最好不要混淆实体类,用到反射的时候会报错-keep public class com.bocop.commons.bean.**-keepclasseswithmembers class com.bocop.commons.bean.** { *;}3,非常好用的收键盘原创 2014-04-23 13:41:35 · 1408 阅读 · 0 评论 -
Palette的使用
(转载,请注明出处:http://www.kennethyo.me/post/android/palettechu-ji-shi-yong)相信有不少的人已经开始关注Android Lollipop,全新的Material设计风格让人眼前一亮,Material强调大胆的阴影和高亮搭配,引用那些意料之外和充满活力的颜色。这里就要说到,不久前Android在v7包中更新的P原创 2014-11-04 16:19:53 · 4588 阅读 · 0 评论 -
CardView初级使用
CardView发布于android sdk v7的支持包中,具体如何将项目加入v7包,请看这里传送门。卡片化是全新的Material风格设计中重要的组成部分之一,卡片设计适合重要信息的展示,以及在list中作为一个包含有复杂操作的item使用。CardView继承于Framelayout,比FrameLayout多了3个重要的属性,card_view:cardElevation,原创 2014-12-28 14:08:54 · 5331 阅读 · 0 评论 -
Android程序猿如何泡设计妹之快速掌握dp和px才可以
相信很多Android程序猿已经对身边的设计妹垂涎三尺了,那么如何博得设计妹的好感呢,学好这篇文章就可以了。程序猿与UI设计妹讨论设计稿和切图的时候,经常会因为dp和px的问题搞的不愉快,这里可以分析出两个原因:1,程序猿原因,不懂dp和px的换算关系。包括我,以及我见到的大多数开发,更多的时候其实不是很关心dp和px是如何来的,以及如何转换的,只知道掌握一般情况用dp,字体大小用sp原创 2015-01-25 22:44:22 · 2338 阅读 · 0 评论 -
Mac Android Studio 使用离线文档
打开~/Library/Preferences/AndroidStudio2.3/options目录;打开jdk.table.xml文件;搜索http://developer.android.com/reference/;替换国服地址https://developer.android.google.cn/reference, 或者替换为本地地址file://$USER_HOME$/Librar原创 2017-08-30 15:55:45 · 981 阅读 · 0 评论