自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (4)
  • 收藏
  • 关注

原创 教你一步步集成友盟+推送(UPUSH)

因为安卓的开源的原因,很多厂商都自己定制了自己的系统,以至于安卓的碎片化特别严重。今天我们要讲的是推送这个功能,消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传、资讯类产品进行新闻推送等等,1. 主流的第三方推送平台分类手机厂商类:小米推送、华为推送。第三方平台类:友盟推送、极光推送、云巴(基于MQTT)BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送...

2018-05-17 15:38:15 17172 6

原创 阿里热修复AndFix的使用教程

一般我们开发了的APP在上线之前都会进行全面的测试,等APP测试基本稳定后,公司会进行封版,待上线。这时如果开发人员又发现了bug,但是又封版了,不能再修复,防止引入新的问题。这时这个bug的修复就只能是在下一个版本再修复。但是,如果是一个小小的问题,我们就总是不停的修复后,发布新版本,用户就要不停的去下载安装。这样给用户的体验是很不好的,如果可以在用户不需要卸载旧的版本再安装新版本就能进行bug的

2017-12-27 10:47:29 1040

原创 异常捕获上传服务器

import android.content.Context;import android.content.SharedPreferences;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.os.Build;import android.os.Env

2017-12-26 17:23:19 635

原创 gradle.properties的使用教程

一般我们都把全局属性都编写在一个工具类中,如果是有环境的切换的话,那么我们还会定义一个标志来进行相应的变换。对于项目而言,有时候需要配置某些敏感信息。比如密码,帐号等。而这些信息需要被很多类共同使用,所以必须有一个全局的配置。当需要把项目push到git上时,我们不希望别人看到我们项目的key,token等。我们可以将这些信息设置在gradle.properties中。 下面就讲解如何使用grad

2017-12-14 17:44:46 14623 1

原创 selector+shape使用工具类

为了避免在drawable文件夹下创建太多的selector,避免同一个样式,因为忘记了名字而重复创建。我们创建一个工具类来实现我们想要的样式,需要的样式,直接在代码中实现。 工具类如下:import android.content.Context;import android.content.res.ColorStateList;import android.graphics.Color;

2017-12-11 10:00:01 501

原创 反编译以及代码混淆的简单介绍

要反编译apk需要下面3个工具: 1. apktool (资源文件获取) 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 2. dex2jar(源码文件获取) 作用:将apk反编译成java源码(classes.dex转化成jar文件) 3. jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源码文件

2017-11-29 18:11:58 654

原创 多渠道打包方法简介

渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等 我们要在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计(这就是添加渠道信息的用处)。 实现多渠道打包的原理: 一般来讲,这个渠道的标识会放在AndroidManifest.xml的Application的一个Metadata中。然后就可以在java中

2017-11-27 15:06:05 6729

原创 Android 签名打包出现的错误的解决方法以及代码中获取应用签名信息方法

现象: Android导出APK包时出现,编译调试时不会出现。 错误信息:Error:(16) Error: "baidutieba_client_inavailable" is not translated in "en" (English) [MissingTranslation]Error:(63) Error: "baidutieba" is not translated in "en

2017-11-27 11:07:49 2896

原创 联网更新版本功能的流程说明

版本更新的流程逻辑图 1、判断手机是否可以联网 /** * 判断手机是否联网 * ConnectivityManager */ private boolean isConnected() { boolean connected = false; ConnectivityManager manager = (Connect

2017-11-24 18:12:30 554

原创 分享给好友功能的实现

1.常用的分享功能实现的框架 http://mob.com/ https://www.umeng.com/2.sharesdk说明: ShareSDK是一种社会化分享组件,为iOS、Android、WP8 的APP提供社会化功能,集成了一些常用的类库和接口,缩短开发者的开发时间,还有社会化统计分析管理后台。 支持包括QQ、微信、新浪微博、腾讯微博、开心网、人人网、豆瓣、网易微博、搜狐微博

2017-11-24 14:27:53 12450 1

原创 登录和退出登录的操作逻辑

登录功能的操作逻辑步骤如下:可以分为五个步骤来实现。 1、进入页面先判断用户是否已经登录 private void isLogin() { //查看本地是否有用户的登录信息 SharedPreferences sp = this.getActivity().getSharedPreferences("user_info", Context.MODE_PRIVA

2017-11-22 14:41:24 41679 1

原创 更换头像的逻辑代码,两个功能,一个是从图库选择,一个是打开相机自己拍照

效果: public void changeIcon(View view){ String[] items = new String[]{"图库","相机"}; new AlertDialog.Builder(this) .setTitle("选择来源") .setItems(items, new Dia

2017-11-21 18:19:10 1287

原创 压缩并设置圆形头像

效果图: 1.设置布局属性:<ImageViewandroid:scaleType="fitXY"/>2.得到指定圆形的Bitmap对象public static Bitmap circleBitmap(Bitmap source) {int width = source.getWidth();Bitmap bitmap = Bitmap.createBitmap(width, width,

2017-11-21 15:18:28 429

原创 Android的shape功能和selector功能的代码中定义的简单使用及替换

使用代码定义的shape资源类 public static Drawable getDrawable(int rgb, int radius){ GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setColor(rgb); gradientDraw

2017-11-17 10:44:55 339

原创 流式布局控件的编写

import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.List;/** * 作者: willkong on 2017/1

2017-11-16 17:11:15 368

原创 APP安装完成打开再返回桌面打开启动两次应用的问题

bug重现步骤: 一般我们从应用市场下载App后,安装完成了点击打开,启动APP,再按Home键切换到后台,再找到APP的图标,点击启动。这时候APP不是打开之前切换到后台的APP,而是重新打开了一个任务。所以这时候退出APP,需要返回两次才能完全退出。 分析问题: 首先我们要知道,一个task并不是对应一个线程,实际上一个task可以包含多个进程, 一个Task中可能有多个同一个Activi

2017-11-16 15:12:11 1167

原创 App前后台切换的监听

APP是否在前台运行的监听。 方案: 实现的大体思路:在Activity生命周期中的onPause()中判断是否进入后台,如果进入后台你就可以做一些你想要做的操作,Activity生命周期中的OnResume()方法中判断App是否进入前台,如果进入前台就做自己想要的操作。 具体实现: 当然这个Activity最好选择BaseActivity然后再让其他的Activity继承它。下

2017-11-16 14:27:09 1240

原创 随机飞入效果视图控件

效果图: 随机飞入效果ui视图控件文件夹randomLayout,文件中包含四个文件类 AnimationUtil.class、RandomLayout.class、ShakeListener.class、StellarMap.class四个文件类。 AnimationUtil.classimport android.view.animation.AlphaAnimation;import

2017-11-15 15:01:33 387

原创 BaseAdapter的封装

ListView的使用,必须有一个装配数据的适配器。所以BaseAdapter的封装就显得尤为重要。 适配器的作用:将具体的集合数据装配到具体的一个item layout中 问题一:数据类型是不确定的。 问题二:item layout的布局是不确定的 问题三:将集合中指定位置的数据装配到item,是不确定的。 因为数据类型不确定,所以我们把封装类写为泛型类。 基于

2017-11-15 10:19:58 248

原创 androidstudio3.0使用butterknife报错解决

Android studio3.0稳定版本发布了,本人总喜欢最新的东西,所以一出稳定版就更新了,但是问题出现了,之前可以运行的项目报错了。Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain ann

2017-11-14 15:17:33 586

原创 水平跑马灯

先上效果图: 实现水平跑马灯有两种方式: 方式一、在布局中编辑一个TextView控件 <TextView android:id="@+id/tv_product_title" android:layout_width="match_parent" android:layout_height="wrap_content" andro

2017-11-10 17:33:37 230

原创 带清除按键的EditText,带晃动动画

import android.annotation.SuppressLint;import android.content.Context;import android.graphics.drawable.Drawable;import android.text.Editable;import android.text.TextWatcher;import android.util.Att

2017-11-10 16:06:39 263

原创 自定义LoadingPage实现网络请求显示的四种情况的封装

我们在网络请求数据的时候,通常有四种情况: 1、正在加载 2、加载失败 3、加载成功,但是没有数据 4、加载成功,同时返回数据 这时候需要我们根据这四种情况显示不同的页面视图。 这里我们可以自定义一个LoadingPage类来实现这四种情况的切换。 一、新建一个LoadingPage类继承FrameLayout 1.定义4种不同的显示状态 state_loading=1;

2017-11-09 16:07:30 1223 1

原创 自定义进度条视图

自定义一个进度条视图,先上效果图如下: 分析视图的实现步骤: 根据看到的视图,我们可以把视图分为三个部分,圆环,圆弧,文本 //1、绘制圆环 //获取圆心坐标 int cx = width/2; int cy = width/2; float radius = width/2 - roundWidth/2;

2017-11-08 16:55:33 220

原创 项目开发中,结构设计的常用工具类

ActivityManager.class用于管理APP的Activity的管理类package com.willkong.p2pclient.common;import android.app.Activity;import java.util.Stack;/** * 作用:统一应用程序中所有的Activity的栈管理(单例) * 涉及到activity的添加、删除指定、删除当前、删

2017-10-31 17:44:47 641

原创 Android设置全屏显示方法

方式一:动态编码的方式:// 去掉窗口标题requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏顶部的状态栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView();方式二:android:theme="@android:style/

2017-10-31 16:42:10 285

原创 连续点击两次退出当前程序

简单的记录项目中使用的一个小功能 :点击返回按钮两次退出当前程序 //重写onKeyup(),实现连续两次点击方可退出当前程序 private boolean flag = true; private static final int WHAT_RESET_BACK = 1; private Handler handler = new Handler(){

2017-10-31 16:10:59 907

原创 底部导航栏

1、新建activity.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wid

2017-10-31 15:47:38 242

原创 百度地图定位开发流程

表达能力真的有点挫,所以都没有习惯写博客,但是,学习了一个知识点,也要记录一下,方便下次调用的时候,可以快速的找到。 这次就是记录一下百度地图的引用流程。主要是定位这个功能在我们平时的项目中用的比较多,所以这里就着重讲一下,百度地图定位功能的使用。 一、打开百度地图的官方网站http://lbsyun.baidu.com/ 选中导航栏的开发文档再点开Android定位SDK,再根据官网的流程讲

2017-10-31 14:27:53 4265 1

原创 RecyclerView使用介绍

RecyclerView 是Android L版本中新添加的一个用来取代ListView、GridView的SDK,它的灵活性与可替代性比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView.了解RecyclerView架构,可以高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAn

2017-07-20 17:03:54 277

原创 Android 自定义 DialogFragment 宽度问题

package com.eno.pages.trade;import android.annotation.SuppressLint;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;im

2017-05-11 20:09:40 602 1

原创 点击或滑动view带动画的下滑展开显示隐藏内容的控件

需求:自定义一个控件,包含的子控件中有一个视图需要点击或滑动的时候平缓的显示或隐藏。 实现:我们只需要使该视图是跟随动画平缓的显示和隐藏,就不会出现不衔接的现象,所以,我们只需要在onMeasure中得到隐藏内容的高度,然后点击这个view的时候对隐藏的view startAnimation,让它的高度从0增长到onMeasure得到的这个View的measureHeight 使用:在布局中使用

2017-05-09 10:56:39 1104

原创 Android处理滑动与点击事件的冲突

需求:一个ViewGroup中有多个控件,在该控件布局中既可以点击也可以上下左右滑动,这样就出现了点击事件和触摸事件的冲突。我们需要当用户点击的时候响应点击事件,如果是滑动就响应触摸事件。 实现:自定义父控件,在onInterceptTouchEvent方法中判断是否点击还是滑动,如果判断是点击,则直接交给child来响应点击事件;如果是滑动,则拦截事件,并通过回调传递给调用者处理。 优点:该控

2017-05-09 10:25:31 9966

原创 android studio如何将多个module统一放在一个目录下

1.root工程下新建extra文件夹 2.将一个module拖进extra文件夹 3.在setting.gradle中将原有的:moduleName改为:extra:moduleName,同步一下。完成。

2017-03-22 23:59:10 1366

转载 Android退出应用最优雅的方式

我们先来看看几种常见的退出方法(不优雅的方式) 一、容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activityimport java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; public cla

2017-03-22 09:31:48 844

原创 股票数量价格加减控件

做股票软件的都应该知道,交易买卖的页面都有用到一个控件就是数量和价格的加减,根据在项目开发中的经验,我把加减控件进行了封装。 自定义组合控件 一般的实现步骤如下: 一、创建要进行组合的布局trade_number_add_sub_view.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://

2017-03-22 09:21:52 1372

原创 我的开发常用工具类方法

总结一下开发中经常用到的工具方法。/** * 屏蔽EditText的复制粘贴功能 * @param editText * @param isCopyAndPasteAble */ public static void copyAndPasteAble(EditText editText,boolean isCopyAndPasteAble){

2017-03-21 13:31:05 294

转载 论读Android源码的重要性——Hook技术之View点击劫持

昨天有好几个小伙伴简信问我,View.onClick怎么hook?回想前几个月前,公司的项目在百度手机助手上线,在快速点击的时候会跳转两次Activity或者两个Dialog等等,为了能够顺利通过百度的测试,老大叫我将所有onClick全部要优化处理,避免用户快速多次点击,于是乎,我写了下面的代码public abstract class NoDoubleClickListener implemen

2017-03-20 09:37:57 1803 3

原创 TabLayout实现底部顶部导航栏

准备步骤: 1、在build.gradle文件下依赖库 compile ‘com.android.support:design:24.2.1’ 效果图: 实现步骤 1、编写布局文件activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.andr

2017-03-13 10:25:10 641

原创 RecyclerView实现广告轮播图

之前做的轮播图,对于十几个图片什么的能够满足,但是万一有几千张,几万张就容易造成内存泄露,使用RecyclerView做的轮播,可以利用它自身的复用机制,比较节省内存。所以这种方式感觉效果更好。 准备:build.gradle添加 compile ‘com.github.bumptech.glide:glide:3.7.0’ AndroidManifest.xml添加权限 效果图

2017-03-10 16:06:27 3909 1

android判断App前后台切换代码

android判断App前后台切换代码

2016-11-18

欢迎引导页

Android软件APP的开机欢迎引导页面。

2016-11-18

Android实现类似股票列表联动控件集合

文件中收集了三个实现股票联动效果的控件,上下左右同步滚动效果。

2016-11-16

水平/垂直滚动联动

证券炒股软件经常会遇到有很多Tab要显示,使得控件的上下/垂直滚动联动经常要使用到,比如撤单,查询等业务都要用到这个控件

2016-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除