![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 74
顾明伟
这个作者很懒,什么都没留下…
展开
-
魅族 Notification 遇到的奇葩问题
推送集成碰到恶心问题,早上还好好的下午日志是正常的,通知栏死活弹不出来,各种排查,收消息,解析,创建通知栏。最后问题定位到Notification 的context上面。通知栏这样创建的:NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentT原创 2017-04-14 16:34:17 · 2667 阅读 · 4 评论 -
Android自定义控件——FloatLayout
本文介绍一个好多App都有的布局容器,如图原创 2015-10-11 13:15:23 · 3831 阅读 · 0 评论 -
代码优化——抽象ViewHolder和BaseAdapter
本文介绍通过抽象ViewHolder和BaseAdapter来简化我们重写BaseAdapter时的步骤前提描述:我们在使用ListView时自然要用ViewHolder来优化ListView,步骤往往是,1.继承BaseAdapter,2.创建一个ViewHolder类,3.在getView中做处理当我们app有很多很多个ListView或者GridView时,写很多很多BaseAdap原创 2015-10-27 01:59:25 · 2083 阅读 · 0 评论 -
NDK 使用流程
本文通过一个简单的java调用c语言的例子来介绍NDK的使用流程使用流程创建一个Android项目创建native方法编译生成头文件 .h 文件编写c文件编译c生成so文件,调用1.创建一个Android项目2.创建native方法:public class MainActivity extends Activity { public stati原创 2015-06-06 21:27:22 · 1110 阅读 · 0 评论 -
Android自定义控件——手把手教你写出Google样式的ProgressBar
本文详细地给大家介绍一下如何实现一个Google样式ProgressBar这里有个相对简单的热热身先 Android 自定义控件——Simple_Loading看图先:balalala好了,我们要实现的就是这样的效果分析:根据前面链接中的重写方式,我们需要重写一个View,然后在View中通过计算来画圆弧,从而实现一个LoadingBar,我们回过头来想想,既然系原创 2015-09-23 00:20:24 · 3393 阅读 · 0 评论 -
Android 自定义控件——Simple_Loading
本文介一个简单的自定义加载圈的实现先看看效果:继承View,和一系列的自定义属性在画布上实现的Loading的效果效果总共三中:1.弧度Loading2.圆Loading3.可以设置1-100的数字,表示百分比,并在Loading上表示相应的百分比效果属性文件和属性的意义:原创 2015-09-08 00:57:34 · 2551 阅读 · 3 评论 -
Android 手电筒(最强适配版)
用闪光灯来实现手电筒功能的代码网上铺天盖地但是原创 2014-11-05 18:51:17 · 1958 阅读 · 1 评论 -
Google Cloud Message for Android(GCM云推送)(译文和开发流程)
Google Cloud Message for Android(GCM推送)google云推送服务允许你从自己的服务端发送数据到用户的Android设备,同时还可以接受来自同一链接发来的信息,GCM服务处理所有的消息队列来把消息交付给目标设备并在目标设备上运行,GCM是完全免费不管你有多大的数据请求。翻译 2014-10-24 18:07:44 · 4179 阅读 · 0 评论 -
ViewGroup重写——滚动页面容器
滚动页面容器子控件水平排列子控件之间可以相互滚动切换松开手指可以自动前后切换比如像ViewPager一样,跟随手势滚动,松开手指可以自动判断滚动到上一个还是下一个。如图。重写onLayout指定子控件的位置,重写onTouchEvent处理触摸事件,实现onGestureListener接口,处理scroll事件。onLayout的规则就很简单了,高不变,宽按照个数原创 2015-05-09 00:15:28 · 1620 阅读 · 0 评论 -
Launcher中的App索引——Apps字母索引组件
本文介绍Launcher中的Apps字母索引功能,什么是字母索引呢?Google的原生的Launcher是用抽屉来装所有App的,但是抽屉真的方便吗?最近市场上流行的好多轻量级桌面都纷纷抛弃了抽屉,用Apps索引来代替。如图:我们来分析一下然后自己做一个1.整体可以重写RelativeLayout2.右边的滑动的字母条可以重写LinearLayout3.中间装A原创 2015-04-20 01:27:05 · 2673 阅读 · 1 评论 -
Android 自定义Activity基类
我们在开发App的时候有时候碰到多个界面有一个共同点的时候,比如,都有相同的TitleBar,并且TitleBar可以设置显示的文字。TitleBar上的点击事件,如果给每一个Activity都写一遍TitleBar是一件非常费事的事情,这个时候我们就可以重写一个Activity基类,让其他有相同点的Activity来继承这个类,从而省去了很多的重复不必要的工作。提高了效率。如图:原创 2015-08-25 01:07:36 · 8832 阅读 · 5 评论 -
Android 自定义主菜单
本文介绍一个超简单的自定义主菜单,效果如下:原理:其实就是对原生的Dialog的一个简单的封装。并加上显示和隐藏的动画效果。再给控件加上回调事件。TestDialog.javapublic class TestDialog implements OnClickListener { private Context mContext; private Dialog mD原创 2015-08-25 00:26:04 · 3962 阅读 · 4 评论 -
Eclipse NDK 打印LOG信息
本文介绍Eclipse 的 NDK 环境如何打印log信息如何编译NDK项目请参考 NDK使用流程流程在C中引用头文件,定义TAG、LOG 宏配置 Android.mkJava编写测试方法1.编辑c文件引用android/log.h 头文件#include 添加宏 TAG 、LOGV#define TAG "Gmw"#define LOGV(.原创 2015-06-11 00:21:14 · 1716 阅读 · 0 评论 -
NDK 使用实例
本文介绍Android 使用 NDK的几个实例实例:使用NDK读写SD卡文件JNI 数组处理一.使用NDK读写文件定义Java层方法,该方法传递一个存储路径到C编译头文件编辑C文件并编译生成so库运行测试1.本例实现一个用从Java层传递一个路径到C层,在C中创建一个文件,在文件中写入内容并保存。事先声明Java 层的Native 方法public cl原创 2015-06-11 00:42:35 · 1615 阅读 · 1 评论 -
Android 自定义控件——自定义属性
本文介绍在 Android 当中自定义控件使用自定义属性本文以下图为例进行讲解 如图:一个圆,我们自定义一个View ,以画一个圆为例,以圆的半径、颜色、透明值 作为自定义属性来进行讲解先定义自定义的View,继承View,重载其三个构造方法 Circle.java 一般我们的自定义属性也是在重载的构造方法中进行初始化,初始化之前我们需要事先定义好属性文件,也原创 2014-12-31 20:09:29 · 2320 阅读 · 1 评论 -
Android自定义控件——PullZoomView
本文介绍PullZoomView的简单实现,如图:就是通过下拉ListView或者ScrollView或者更多的View如GridView,RecycleView等等,的时候对Header有一个放大缩小的效果实现思路就是根据所需要封装的不同的下拉控件来做不同的实现,比如:ListView:该控件本身有添加Header的功能,我们只需做简单的处理就可以用了,在满足一定条件原创 2016-01-15 00:24:22 · 5131 阅读 · 4 评论 -
微信第三方接入遇到的科恩(坑)——登录、分享
今天由于业务需要翻看了微信的开发平台和相应的接口文档然后一边看,一边骂娘微信开发者文档中的科恩!科恩目录微信分享微信登录一.微信分享是之用户通过第三方的app发送内容到微信,可以是群组,好友,朋友圈。如下:开放平台的权限显示,应用审核后不需要认证300块的开发者也是可以分享内容的。 于是我天真的以为我快要成功了,我创建了原创 2015-07-28 00:53:38 · 6723 阅读 · 7 评论 -
友盟消息推送 3.x 的坑爹问题 s=-11,s1=accs bindapp error
客户端需要从百度推送切换到友盟推送,太久没看了就去看看了集成文档。 写Demo的过程还算顺利,几分钟就搞定了,但是往项目迁移的时候出出现了坑爹问题,为啥说坑爹呢?因为我用的复制粘贴啊,怎么会失败。但是事实就是失败了初始化的时候提示:s=-11,s1=accs bindapp error不明白,就去Umeng论坛搜索。Umeng小秘书粘的各种答案都基本上都不解决问题,下面问这个问题的人原创 2017-04-13 14:05:04 · 9576 阅读 · 20 评论 -
IJKPlayer 遇到的诡异问题
今天重新封装播放器界面的时候发现了一个诡异的问题。 覆盖在ijkplayer上层的View莫名其妙消失了,View确定已经被addView 到了ContentView中,但是视图里就是看不到,debug也确定了被add的View已经有了Parent,add两次的时候会抛异常。那更ijkplayer又有什么关系呢?当我把ijkplayer remove掉之后,看不原创 2017-04-12 12:52:23 · 3658 阅读 · 1 评论 -
猎豹"快切App"中用到的Android开发技巧探索[附源码]
原文链接:http://blog.csdn.net/u013045971/article/details/52119117前景提要: 什么是块切? 快切是从猎豹的Clear Master中分离出来的一个悬浮窗小工具。因为对这个比较感兴趣,博主断断续续花了2个月时间完成了一个类似块切的版本,起了个名字叫“Well Swipe”,中文名叫“Well 划划”。本文会针对Well 划划开发中遇到的一些坑和和技巧做一个分享。来给大家揭密块切开发过程中用到的自定义控件技术细节。在这里还原创 2016-08-05 01:56:50 · 9306 阅读 · 54 评论 -
仿微信滑动退出Activity
原理一句话就能描述清楚。重写Activity的dispatchTouchEvent,滑动的时候拿到Activity栈中栈顶Activity的上一个Acticity的ContentView添加到栈顶Activity的DecorView中,滑动的过程中做视图平移,滑动结束之后把前面拿过来用的ContentView归还给上一个Activity,然后finish当前Activity。原创 2016-12-28 10:40:17 · 1832 阅读 · 4 评论 -
一小时搞明白注解处理器(Annotation Processor Tool)
Java中的注解是个很神奇的东西,还不了解的可以看下一小时搞明白自定义注解(Annotation)。现在很多Android的库都用使用注解实现的,比如ButterKnife,我们不防也来学习一下,学完注解处理器,我们尝试写一个简单的类似ButterKnife的东西来绑定控件。什么是注解处理器? 注解处理器是(Annotation Processor)是javac的一个工具,用来在编译原创 2016-12-16 17:38:13 · 27234 阅读 · 1 评论 -
Android自定义控件——ExpandTextView
本文介绍一个这样婶儿的TextView,如图:点击的时候TextView会伸缩,有种Clip的感觉,原理也很简单,就是把两个TextView重叠起来,一个现实固定的行数的文本,另一个现实全部的文本,初始化的时候,容器的高度等于固定文本的高度,完全展开时的高度等于文本显示全的高度,过程用一个动画控制就可以了。下面贴代码:ExpandTextView.javaimport原创 2016-01-25 00:36:18 · 6230 阅读 · 6 评论 -
RxJava和Retrofit结合使用
前言:前段时间花了点时间学了一下RxJava和Retrofit,后面在实践中被没有用到,今天一看,呃,怎么又忘得差不多了。原创 2016-11-09 10:51:42 · 1657 阅读 · 0 评论 -
最近写的一个控件——Well Swipe 拖拽排序实现
Protocol Buffersprotocol buffers 是一种平台无关的,中性的,可扩展机制的序列化结构化数据What are protocol buffers?Protocol原创 2016-04-20 00:50:25 · 4136 阅读 · 5 评论 -
最近写的一个控件——Well Swipe beta 1.0
最近花了大概一个半月的业余时间写的,从没有到有,中间也碰到了很多的坑,一点一点的都啃过去了...还有很多的地方需要优化,比如1.编辑状态下如何对比原有数据的和编辑过之后的,选择一种效率最高的方式进行数据库的更新,目前走的做法是把现有的全删了,然后把编辑过之后的重新插入,但是明显感觉到会耗费时间。2.编辑状态下删除一个如何进行过度动画。3.创建文件夹等高级功能4.主题功能原创 2016-04-11 10:26:48 · 1656 阅读 · 4 评论 -
Android Mqtt
本文介绍在Android上使用mqtt,附上客户端demo和服务器demo。mqtt资料自行百度客户端:别忘了加联网权限public class MqttService extends Service { private String host = "tcp://192.168.1.184:1883"; private String userName =原创 2016-02-28 19:08:45 · 4303 阅读 · 1 评论 -
Mac安装Protobuf编译Java
本文整理了再在Mac上安装Protobuf 和编译Java的详细过程在Mac上安装protobuf创建一个java项目,编写.proto文件用protobuf编译生成java文件,测试用wire编译生成java文件,测试1.protobuf下载地址:https://github.com/google/protobuf/tags?after=v3.0.0-alpha-1Git原创 2016-01-27 12:55:01 · 9943 阅读 · 1 评论 -
Android自定义控件——Indicator
Indicator确实是个老梗了...有重写HorizontalScrollView的,有重写LinearLayout。这个是重写LinearLayout的哦,往LinearLayout里add TextView用作tab标签,在LinearLayout底部画一个矩形当作指示器。ViewPager滚动的时候用简单的小学加减乘除混合运算来机选这个矩形位置,然后滚动就好了原创 2015-12-02 22:49:30 · 4126 阅读 · 5 评论 -
快速集成微信支付和支付宝支付
本文介绍博主自己封装的一个微信支付和支付宝支付的libraryapppay_library:https://github.com/Mingwei360/apppay本项目解决的问题仅限于最后的支付环节,即你告诉我多少钱,我带着这个多少钱的信息发起微信支付或者支付宝支付,仅需简单的配置信息,然后每次支付只需调用三句代码即可发起支付,封装了对订单信息的拼装,订单的签名等。不牵扯订单的处理,订单原创 2015-09-28 20:47:37 · 8490 阅读 · 0 评论 -
ViewGroup重写——网格容器
本文介绍ViewGroup重写,我们所熟知的LinearLayout,RelativeLayout,FrameLayout等等,所有的容器类都是ViewGroup的子类,ViewGroup又继承View。我们在熟练应用这些现成的系统布局的时候可能有时候就不能满足我们自己的需求了,这是我们就要自己重写一个容器来实现效果。ViewGroup重写可以达到各种效果,下面写一个简单的重写一个ViewGr原创 2015-04-25 00:14:41 · 2193 阅读 · 0 评论 -
简单使用AppWidgetHostView显示和创建 AppWidget
本文介绍Widget的显示过程Widget 就是我们常用的桌面小部件,它常常被显示在桌面上去完成一些功能,那么是如何显示的呢?主要相关的类:AppWidgetHost:是用来容纳AppWidget的地方,主要有两个功能(1).用来处理AppWidgetService事件,通过updata、provider_change事件来处理和更新Widget。(2).创建AppWidgetHo原创 2014-12-25 17:22:39 · 5082 阅读 · 0 评论 -
WifiManager 实现Wifi快捷开关
wifi快捷快捷开关wifi快捷快捷开关实现起开比Gprs开关简单,WifiManager有开放的API,想了解Gprs快捷开关的同学看这篇文章:http://blog.csdn.net/u013045971/article/details/41750977获取wifi状态: public static boolean isWifiEnable(Context context) {原创 2014-12-09 13:34:25 · 2211 阅读 · 1 评论 -
Scroller 简单使用介绍
public class Scroller extends Object介绍: This class encapsulates scrolling. You can use scrollers (Scroller or OverScroller) to collect the data you need to produce a scrolling animation—for e原创 2015-01-31 14:21:20 · 2194 阅读 · 0 评论 -
Android ContentObserver使用实现GPRS快捷开关
ContentObserver通过监听database来实现GPRS快捷开关改变GPRS的开和关的状态我们一般调用反射就可以,如下:public static boolean isMobileDataEnable(Context context) {//判断是否打开 boolean mobileDataEnabled = false; // Assume disabled原创 2014-12-05 18:24:14 · 1725 阅读 · 0 评论 -
Android 闪电效果 (Electric Screen,电动屏幕)
本文介绍一个在google play上很火爆,好玩的App,如题如图: 实现思路:在一个透明的Activity上用SurfaceView绘制闪电,同时加上震动和音效。在touch事件中调用闪电算法。SurfaceView是一个继承自View的类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。SurfaceView特性:可以在主线程原创 2014-12-17 18:08:11 · 10351 阅读 · 24 评论 -
Activity 半透明样式
自定义样式: @null true true true @color/transparent @color/transparent true #00000000应用:<activity android:name="com.example.T原创 2014-12-20 00:57:32 · 1262 阅读 · 0 评论 -
Android 快速理解事件分发
什么是事件分发?控件之间有嵌套关系,一般简单的控件点击和触摸不需要考虑事件分发问题,如果需要处理复杂的触摸、点击、滑动等逻辑的时候就需要对事件进行拦截和分发处理。事件分发是用来解决控件嵌套在一起的时候需要去判断你点击的是父控件呢还是子控件,对事件由上到下从外到里的传递。涉及的方法有:dispatchTouchEvent(MotionEvent ev)onInterceptT原创 2015-01-29 00:28:09 · 931 阅读 · 0 评论 -
Android 碎屏效果 (Crack Screen,击碎屏幕)
本文介绍一个好玩的App 如图:实现思路:在一个透明的Activity上用一个自定义View,然后在View上画.9的碎玻璃图片,加上音效。然后过一段时间消失。主要用一个postInvalidate();方法,用一个集合去装手指触摸过的地方,在touch事件中调用postInvalidate();方法进行视图重新绘制。需要注意的是,这里的播放音效和上篇博客 Andr原创 2014-12-19 00:01:02 · 7919 阅读 · 5 评论 -
WindowManager创建创建悬浮窗
WindowManager创建悬浮窗,比如音量控制的视图弹窗,位于屏幕的最上面WindowManager mManager = (WindowManager) getApplicationContext() .getSystemService(Context.WINDOW_SERVICE);//WindowManager管理器RelativeLayout mBottomView =原创 2014-12-16 11:03:51 · 1666 阅读 · 0 评论