android开发
im哆来咪
这个作者很懒,什么都没留下…
展开
-
Retrofit封装完善 (从实际项目出发)
前言原创 2020-10-24 14:03:33 · 1605 阅读 · 0 评论 -
androidstudio连接网易MUMU模拟器
androidstudio自带的模拟器不好用,可以试试网易MUMU模拟器,连接简单速度极快。打开mumu模拟器后,打开命令行输入:adb connect 127.0.0.1:7555就能成功连上模拟器。...原创 2019-12-07 13:23:57 · 588 阅读 · 0 评论 -
android 图片轮播控件 Android-ConvenientBanner简单使用
ConvenientBanner 通用的图片轮播控件。支持无限循环,可以设置自动翻页和时间(而且非常智能,手指触碰则暂停翻页,离开自动开始翻页。你也可以设置在界面onPause的时候不进行自动翻页,onResume之后继续自动翻页),并且提供多种翻页特效。 对比其他图片轮播控件,大多都需要对源码进行改动才能加载网络图片,或者帮你集成不是你所需要的图片缓存库。而这个库能让有代码洁癖的你欢喜,不需要对原创 2016-03-31 13:56:36 · 11664 阅读 · 6 评论 -
dialog控件Sweet Alert Dialog简单使用
Android版的SweetAlert,清新文艺,快意灵动的甜心弹框 首先来看效果图 有时候为了节省开发时间,我们不得不寻找一些精美完善的控件来充实我们的app,这个控件挺好看的,使用也非常简单,下面来看一下它的用法: 首先添加依赖:dependencies { compile 'cn.pedant.sweetalert:library:1.3'}显示Material进度样式Sw转载 2016-03-31 14:27:27 · 5483 阅读 · 0 评论 -
使用radiobutton实现底部导航栏
很多app中,都有底部导航栏。点击不同的菜单,就会显示不同的界面。 实现底部导航栏的方式有很多,最容易想到的就是是imageview+textview。当然还有一些别的方法,例如完全可以通过radiobutton来实现这个功能。 先来看布局:<RadioGroup android:layout_width="match_parent" androi原创 2016-05-04 15:55:15 · 6693 阅读 · 0 评论 -
android开发利器Data Binding简介和简单使用(已支持双向绑定)
不久前DataBinding已经支持双向绑定,所以我也没有理由再拒绝使用它。因为它实在是太方便了。 有了它我们不再需要findViewById,也不需要在定义一个个控件。构建环境如果想使用支持双向绑定的dataBinding,必须使用Android Studio 2.1 Preview 3版本及以上。必须要使用2.1-alpha3以上 android gradle plugin。在需要使用的m原创 2016-06-06 16:40:38 · 6664 阅读 · 0 评论 -
通过js调用android原生方法
有时候我们有这样一个需求,监听html中控件的一些事件。例如点击html中某个按钮,跳转到别的activity,复制某段文本。 首先是对webview的设置:myWebView = (WebView) findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true); m原创 2016-06-29 15:56:27 · 3588 阅读 · 2 评论 -
利用反射修改drawerLayout滑动边距
drawerLayout是官方的侧滑控件,简单方便。但是我们会发现drawerLayout滑动显示的时候手指一定要贴到屏幕最边上然后滑动才可以把隐藏的菜单给拉出来。drawerLayout也没有提供给我们一个方法来修改滑动边距。查看drawerLayout源码可以发现,在DrawerLayout中有两个ViewDragHelper对象:mLeftDragger,mRightDragger;这个类中有原创 2016-07-01 15:45:32 · 1936 阅读 · 0 评论 -
android嵌套滑动NestedScrolling
首先来看我门要做的效果: 布局是用一个linerLayout实现NestedScrollingParent 接口,然后里面一次放了一个head,tablayout,viewpager,recyclerview。 NestedScrolling提供了一套父 View 和子 View 滑动交互机制。要完成这样的交互,父 View 需要实现 NestedScrollingParent 接口,而子原创 2016-09-02 14:21:41 · 920 阅读 · 0 评论 -
android dialog实现底部弹出和手指滑动隐藏效果
直接来看效果图: 第一次隐藏是点击空白区域自动隐藏,第二次是通过手指滑动控制dialog隐藏。 实现这个效果的代码量很少,直接来看代码: @Override protected void onStart() { super.onStart(); Window window = getWindow(); window.setWindowA原创 2016-09-13 15:48:18 · 7197 阅读 · 8 评论 -
android消息机制(handler运行机制)解析
在android日常开发中,我们不可避免的会使用到有关handler的知识。可以利用handler来进行消息的传递。由于android不允许ui线程访问网络,非ui线程又不能更新ui。这种情况handler是怎么处理的。还有想延迟加载某个方法,大部分兄弟都会用到handler.postDelayed(runnable,delayMillis)方法来延迟加载。。也有些人会误认为这里是新开了一个线程来处原创 2016-12-13 12:04:27 · 528 阅读 · 2 评论 -
自定义PullToRefresh正在刷新的时候不能滑动listview问题解决
今天在定义PullToRefresh的时候遇到一个问题,继承了PullToRefreshBase类实现了相关方法,为recyclerView添加了上啦和下拉功能后发现正在刷新的时候recyclerView不能滑动。根据时间分发的顺序,我首先想到的就是正在刷新的时候PullToRefreshBase把事件给拦截了,所以查看PullToRefreshBase源码的onInterceptTouchEven原创 2016-03-25 16:58:38 · 2361 阅读 · 1 评论 -
pullToRefresh集成SwipeMenuListview,RecyclerView
Andorid-PullToRefresh大家应该都非常的熟悉,是一个下拉刷新,上拉加载的控件。功能也是非常的强大,我们可以自定义各种动画。 SwipeMenuListview也是非常的常用,可以为你的listview添加侧滑菜单,功能也是很完善。 很多新人想使用侧滑和下拉刷新,上拉加载的时候会不知道怎么实现。其实把这两个控件集成一下也是很方便的。 首先我们来看看PullTorefreshLi原创 2016-03-25 13:36:08 · 1675 阅读 · 0 评论 -
最新版微信qq抢红包辅助解析
微信升级6.3之后,很多人发现自己的抢红包神器失效了在打开红包界面不会自动拆开红包。原因请看下图: 和旧版本相比这个按钮的text为空,所以以前根据“拆红包“字符串匹配AccessibilityNodeInfo在方法在这里并不适用。我们仔细查看怎么获取到这个按钮的nodeinfo,根据id获取不可取,因为控件id每次都会改变。然后仔细看这个button clickable=true,focus原创 2016-01-27 11:39:03 · 1481 阅读 · 1 评论 -
Android直播预览推流修改数据为镜像
/** * 修改数据设置推流镜像 * * @param data * @param imageWidth * @param imageHeight * @return */ public static byte[] NV21_mirror(byte[] nv21_data, int width, int heig...原创 2018-11-21 10:10:46 · 710 阅读 · 0 评论 -
Android简单高效的屏幕适配方案--SmallestWidth适配
smallestWidth也叫做sw限定符,是在Android3.2引入的一种用来适配平板的方案。使用这种方案可以简单高效稳定的实现屏幕路适配。原理: Android会识别手机宽高中最小的那个值(其实就是宽度),然后根据识别到的数值去资源文件中寻找对应的文件比如:我的华为手机屏幕宽度是300dp,对应的就是sw300dp的文件夹。再来看看sw300文件夹下的dimens.xml文件上图是以设...原创 2018-11-06 16:33:03 · 769 阅读 · 0 评论 -
android view的多种移动方式对点击区域以及属性的影响
项目中需要做直播间飞屏动画(屏幕外飞进来,停留一会飞出),由于点击区域需要跟随view移动而改变,所以不能用普通的动画,然后就用属性动画来修改margin值达到平移效果,由于一开始view要在屏幕外边飞入。由于部分原因效果不是很满意,最后使用修改translation的方式达到效果。view的多种移动方式对点击区域以及属性的影响如图:...原创 2018-05-26 17:12:51 · 914 阅读 · 0 评论 -
Android热修复——实现原理解析
一、简述android热修复是这2年较火的新技术,是作为安卓工程师必学的技能之一。在以前,线上产品如果出现了一点bug,就只能在修复后重新打包测试然后审核上线,然后用户还得重新下载安装,费时费力,大大降低了用户体验,但是现在有了热修复方案。 目前较火的热修复方案有很多:andfix,tinker,还有阿里最新的sophix方案(据称支持大多数加固)本篇文章通过通俗易懂的方式来解析热修...原创 2018-04-13 13:38:51 · 427 阅读 · 1 评论 -
android tablayout 自定义下划线(Indicator)样式 宽度(比文字宽度更短)
通常在ViewPager的上方,我们都会放一个标签指示器与ViewPager进行联动。tablayout作为官方退出的自带控件,大家应该都可以熟练使用了。面对各种需求,tablayout提供了几个简单的方法用来设置颜色,下划线宽度等。下面来完成几个自带方法不能解决的需求:需求 1:缩短下划线宽度 2:自定义下划线样式,比如弯曲的线条,比tab文字宽度更窄解决方法 网上有个很好的解决方案,可以用原创 2018-03-29 14:30:43 · 5968 阅读 · 1 评论 -
Android热修复——简单实现
上一篇文章《Android热修复——实现原理解析》已经分析了android热修复的实现原理,这里来做一个简单的实现。实现步骤拿到修复好的class文件转成dex包加载dex补丁先来看一下错误代码public void clickUserLogin(View view) { int i = 1/0;}很简单,然后点击的时候会报错,提示0不能是除数java.lang.Illeg原创 2018-04-17 11:41:30 · 679 阅读 · 0 评论 -
Genymotion模拟器修改hosts文件等问题
使用模拟器可能会遇到的问题: 1:模拟器是x86的 可能apk运行报错,下载一个兼容包,拖入到模拟器就行。5.0以上要使用新版的兼容包。 2:修改hosts文件adb dervices 查看连接的设备,如果报错了。 设置Genymotion 的sdk指向工程中的sdk路径adb shell $ su # mount -o remount,rw /system 获取权限adb原创 2018-03-22 10:18:03 · 1071 阅读 · 0 评论 -
Android多分辨率适配原理
Android常用度量单位:px:是Pixel的缩写,也就是说像素inch:是指英寸,设备对角线的长度dpi:它表示每英寸上的像素点个数,也就是屏幕密度。例如手机分辨率为1920*1080,先利用勾股定理得其对角线的像素值为2202.91,再除以对角线的长度5,计算出440.582便是该设备的屏幕密度dpi。dp:android中常用的使用单位,不要与dpi混淆,下面会详细介绍dp ldp原创 2018-01-11 14:19:20 · 1286 阅读 · 0 评论 -
android 线程池的使用以及Executors的优缺点
android开发,大家最熟悉的肯定是主线程,也就是ui线程,也都知道在非ui线程更新界面报错提示不允许在子线程更新ui。部分耗时操作会第一时间想到使用子线程,例如:new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub }}).原创 2017-12-06 16:59:28 · 3597 阅读 · 0 评论 -
自定义DrawerLayout滑动样式
自从官方推出侧滑控件DrawerLayout后,大部分人都开始优先选择使用简单方便的DrawerLayout,今天来讲讲怎么自定义滑动样式,先来看效果图: 如何用DrawerLayout实现这个效果呢,其实很简单,只需要监听抽屉的滑动:drawer.addDrawerListener(new DrawerLayout.DrawerListener() { @Overri原创 2017-01-11 14:59:30 · 2069 阅读 · 0 评论 -
android微信支付快速接入详细教程
准备工作 1:使用公司管理者微信号登录微信开放平台,进行开发者资质认证。完成审核后去申请appid,填入应用基本信息,签名值的是md5值,去掉所有冒号然后小写。md5值获取方式: http://blog.csdn.net/duolaimila/article/details/53643455 注意填写自己的正式签名。 2:由于微信支付测试需要正式的包,所以测试的时候需要先打包再测试。嫌麻烦的原创 2017-02-15 12:37:16 · 1039 阅读 · 0 评论 -
android application方法执行多次
偶然发现我自定义的application中方法被调用了两次,看了一下配置文件发现百度的定位service使用了一个单独的进程: <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">原创 2016-09-12 13:30:35 · 3878 阅读 · 1 评论 -
FragmentTabHost的简单使用
现在很多主流的应用都喜欢底部几个导航按钮,点击切换不同的页面。通常我们可以自己底部写按钮,然后点击不同的按钮自己来控制切换fragment。今天我们用fragmentTabHost来快速的实现这个功能:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/r原创 2016-08-17 13:19:03 · 435 阅读 · 0 评论 -
android判断应用在前台还是后台
有时候我们需要获取自己的应用是否在前台或者在后台,然后根据不同的状态处理:/** * 判断应用是否在前台 * * @param mContext * @return */ public boolean isAppForground(Context mContext) { ActivityManager am = (Activi原创 2016-07-08 14:43:01 · 411 阅读 · 0 评论 -
listview没有数据时显示指定的view
通常我们马上想到的就是在listview有数据的时候隐藏暂无数据的view,然后没有数据的时候显示。每次都要自己这样去操作总觉得有点不舒服,我就想着自定义一个listview还自动控制显示暂无数据的view,结果发现listivew已经给我们提供了一个公开的方法setEmptyView<ListView android:layout_width="match_paren原创 2016-07-05 11:32:29 · 1396 阅读 · 0 评论 -
android 半透明圆角dialog的简单实现
<style name="TransparencyDlg" > <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item><!-- 是否漂现在activity上--> <原创 2016-01-07 10:27:41 · 627 阅读 · 0 评论 -
类似美团的多条件筛选弹出框简单实现
最近项目需要一个页面有n个筛选条件。由于本人没有审美细胞,一开始就写了一个dialog,然后点击dialog中的item再弹出各个条件。。后来发现实在有点丑。。刚好看到美团上也有类似需求。于是就准备模仿美团上做一个把。 弹出框选择使用popupwindow。 一开始想到的就是左右两个listview。点击左边listview item改变右边的数据。 左右listview可以自定义radiob原创 2016-01-18 17:28:14 · 4973 阅读 · 0 评论 -
android收集应用崩溃信息
我们知道,由于android手机数量之多。我们写的应用在上线后很难保证应用是否会报错崩溃在个别的手机上。因此我们有必要采集崩溃信息,供开发人员分析修复。 幸运的是,android提供了处理这个问题的方法。在Thread类中,有一个setDefaultUncaughtExceptionHandler方法。可以设置系统的默认异常处理器。当应用crash的时候。UncaughtExceptionHand原创 2016-01-19 13:05:03 · 622 阅读 · 0 评论 -
Android Studio “懒人”必备插件android layout id converter
在一个布局文件中,如果定义了很多很多id,代码中一个个findview是一件非常枯燥并且浪费时间的事情。所以这里向大家推荐一个必备插件android layout id converter。配置完成后只需要在xml文件右键点击Convert android layout xml,然后在你activity中只需要粘贴,就可以帮助你自动生成代码。如下这些就是自动生成的:private WheelView原创 2016-04-01 14:42:06 · 2275 阅读 · 0 评论 -
类似微信图片选择器-MultiImageSelector
在项目中,我们经常会遇到这样的需求,就是手机手机图片的选择,包括拍照。按照原生的方法实现当然也很简单,但是如果要优化一下,做个类似微信的图片选择器的话,如果不想自己慢慢写的话,也可以参考下别人开源的类库,先来看看MultiImageSelector类库的效果图: 首先把 multi-image-selector 作为你的项目依赖添加到工程中. 在你的 AndroidManif原创 2016-04-05 17:57:38 · 2222 阅读 · 2 评论 -
android支付宝支付功能集成
首先需要做的当然是去申请开通移动app支付,审核成功后就可以开始往自己项目集成支付功能了。 进入文档中心,资源下载,选择移动支付demo&sdk。下载sdk和demo。 然后导入android版demo。直接运行是无法正常运行的,我们需要填写一些必须的数据,打开PayDemoActivity,可以看到需要我们填写的数据: 商户PID: 商户收款原创 2016-05-24 10:21:59 · 582 阅读 · 0 评论 -
android Tablayout的使用
以往我们想要实现这样的效果,要么去找三方开源库,要么自己动手写viewpager,然后根据viewpager的滑动计算指示器的滑动距离来实现。现在在google提供的design包里有一个tablayout可以帮助我们快速实现。<android.support.design.widget.TabLayout android:id="@+id/tablayout"原创 2016-09-01 13:43:13 · 567 阅读 · 0 评论 -
android6.0运行时权限回调没执行
早就了解过6.0加了个运行时权限,拿着我6.0系统的魅族手机测试了一下,发现压根就没任何区别和以前,回调方法都不执行。检查了没发现哪里写错了,就想到了估计是被魅族自己屏蔽了把然后继续沿用自家的权限管理方法。然后去测试了一下主流的手机,在我测试的机子中 {魅族,一加,小米,锤子,奇酷,htc}或多或少的改了,有魅族一样回调压根不执行的,也有执行了回调不管你同不同意直接返回同意,然后再弹出自家的权限管原创 2016-12-28 15:14:25 · 1137 阅读 · 0 评论 -
解决asynchttpclient https请求报错hostname in certificate didn't match:
错误: javax.NET.ssl.SSLException:hostname in certificate didn’t match:<..*.com> != <.**.com>解决办法:public static SchemeRegistry getSchemeRegistry() { try { KeyStore trustStore = KeySto原创 2017-06-26 16:43:41 · 2718 阅读 · 0 评论 -
android快速仿花椒,映客直播上下滑动切换直播间
直播项目中竖版直播间原先没有上下滑动切换直播间的功能,需要加入滑动切换功能。我现在接手的项目由于直播间代码很多,最好是希望原代码都原封不动。翻看了几个app,发现花椒直播的上下滑动很有趣,如果在播放视频的时候滑动直播间布局不会跟着滑动,但是下面一个直播间封面被拉出来了,如果快速滑动的时候,也就是直播直播还来得及出现,都是封面的时候,就和正常viewpager滑动一样。所以就猜想花椒只是在直播间界面布原创 2017-05-15 18:44:49 · 9591 阅读 · 9 评论 -
android 快速理解view的事件分发
事件的分发过程由三个主要的方法来共同完成:dispatchTouchEvent(MotionEvent ev),onInterceptTouchEvent(MotionEvent ev),onTouchEvent(MotionEvent ev),来看看他们分别有什么功能public boolean dispatchTouchEvent(MotionEvent ev) 事件的分发就是通过这个方法来执原创 2017-06-24 16:48:27 · 397 阅读 · 0 评论