android
尹忠政
奋斗的年纪
展开
-
优雅的自定义TabLayout
为啥要自己定义TabLayout? 1.design包中的TabLayout很多时候不能满足UI的需求 2.我们需要自定义tab的位置和tab内容的字体和style 3.我们自定义的控件比较容易适配 有人可能会百度,改变tab字体大小和style不是有方法吗?但是当你要加入自定义布局的时候,就无法实现了。但是字体大小和字体的style还是可以通过反射来修改的,TabLayout中Tab的字段原创 2017-04-03 19:37:02 · 1156 阅读 · 0 评论 -
飞机大战(上篇绘制)
大家好,今天来共同探讨一下,飞机大战这个游戏,本篇章主要讲解飞机大战的背景绘制,用户飞机的绘制,敌机的绘制,子弹的绘制,本次游戏设计和前两次是一样的,都是采用的是SurfaceView+BitMap二级缓存实现的。见下图 首先来看看先,下面这个接口 public interface ImageErji { float getX(); float getY(); Bitm原创 2017-02-20 22:51:35 · 717 阅读 · 2 评论 -
粘性滑动-自定义StickinessView
design包的出现,android界面发生了巨大变化,各种滑动配合的效果,下面我就粘性滑动中的一种进行自定义,效果图如下: 大家看到效果了,这里我是继承了LinerLayout,方便一点,若果是ViewGroup的话,也就复杂一点点。这里分为三部分: 1.head1,顶部可移动的Layout。 2.head2,固定的头部,不会滑动除屏幕外。 3.可滑动的Layout(这里只可以是Lis原创 2017-03-03 23:53:09 · 535 阅读 · 0 评论 -
贪吃蛇Android
大家好,今天我来给大家带来贪吃蛇的实现思路,这里我是采用二级缓存的策略来实现背景,蛇身和食物的绘制,操作图片实现蛇身的移动.好了见下图: 这就是最后的效果图,其中的笑脸表情是在QQ的安装包中找到的。 1.要搞清楚手势,这里采用的是SimpleOnGestureListener的监听实现类,这里我重写了 SimpleOnGestureListeneronFling()方法,在这里控制蛇身的移原创 2017-02-18 19:02:49 · 664 阅读 · 0 评论 -
Android-WindowManger的应用
为什么需要使用WindowManger呢?当我们需要弹出View的时候,我觉得使用WindowManger来管理我们的弹窗是极佳的,我开始查看了PopWindow的源码,发现其中也是使用WindowManger来实现的,接下来我们就实现一个简单的功能,指定弹窗出现的位置。原创 2017-01-14 15:01:54 · 447 阅读 · 0 评论 -
优雅自定义Dialog
前言在写这篇之前我说说我的感受,在之前有用到DiaLog的地方,我真的很郁闷,各种不适配,功能实现起来很是麻烦,那么当我接触到WindowManger后,我就心想,我要自己弄一套DiaLog,来实现我想要的功能。其实我们的大部分提示窗口只要依附在Activity上就可以了,我们得到一块窗体后,我们就可以在窗体上进行绘制我们想要的效果。封装WindowManger1.初始化我们的WindowManag原创 2017-05-03 17:17:04 · 957 阅读 · 4 评论 -
自定义TabLayout
周五,神奇的一天,意味着周末就要到了,今天项目中遇到这样一个Tab,选中tab的背景是个圆角矩形,方向指向器没有了,这样普通的TabLayout不能满足我的要求,可能会想到动态的去设置选中Tab的背景不就可以了,但是那样的话太生硬了,没有动画效果,其实想想也还比较简单,今天就简单的说一说这个YzzTab。效果如下图: 这里是四个Tab,一版只显示3个,这里假设有num个Tab,当滑动到第3个时原创 2017-02-25 01:40:27 · 416 阅读 · 0 评论 -
FlowLayout实现
大家好,这是我的第二篇文章,这里我和大家分享下自定义流式布局,在写代码之前,我们要弄清楚,onLayout()和onMeasure()这两个方法,前者是确定自视图的位置,后者是测量子视图的大小,来确定容器的大小。 如图所示: 要准确确定其位置和大小,就要知道padding和margin指的是什么。 好了,接下来我们来写代码了。 omMeasure() @Overrid原创 2017-01-15 00:17:29 · 247 阅读 · 0 评论 -
自定义View实现项目中的需求
今天我要说的是,在项目中遇到这种情况,就是在个人中心,购买的商品有五种状态,这五个图标将要是下面这样的排列如图: 要求: 1.位置1和位置2分别位于父容器的left和right,这是必须满足的条件 2.这5个View必须是平分父容器的 首先我先到了GrideView,然后发现无论怎么调整item布局都无法达到上述要求,位置5无法满足 然后,我用的是LinearLayout,写五个,发先原创 2017-02-22 16:20:55 · 376 阅读 · 0 评论 -
自定义多彩的ProgressBar
结合上篇的OkHttpUtils,本篇我来制作一款支持圆形和圆角矩形的ProgressBar,来装一下b。 注释:本ProgressView支持圆形和圆角矩形(代码中为HORIZONTAL何VERTICALITY两种模式) 先来看看效果吧,下载QQ.apk文件,实现进度条实时更新 是不是比原生的ProgressBar好看多了?有木有,哈哈。好了,来看看如何搞定该自定义View 1.初始化原创 2017-03-29 23:56:39 · 513 阅读 · 0 评论 -
RecycleView的刷新加强版
上篇中讲到的RecycleView实现的是ListView的刷新效果,还有部分问题,这里我将在下面一一道来,本次又添加了GridView的刷新效果如下图: 这里我要说一下GridLayoutManager,GridLayoutManager是集成LinerLayoutManager的,所以上篇中的获取最后一个position的逻辑不用更改。public void setLayoutManger(f原创 2017-02-28 21:46:52 · 448 阅读 · 0 评论 -
优雅自定义轮播图
开篇这个是好久前项目中自己写的,实现了一组图片的轮播展示效果,解脱第三方,打造属于自己的轮播组件。效果预期概要设计轮播容器及注意事项1.BannerView只要有两部分部分组成,一部分是ViewPager,另一部分是指向器。那么我们只需要向容器添加ViewPager和特定的指向器容器即可,然后将二者建立连接,达到我们轮播图说要的效果。2.BannerView一般都需要做得到尺寸的适配,为了优化我们B原创 2017-05-03 16:27:16 · 692 阅读 · 0 评论 -
仿QQ左滑删除
本篇文章主要谈谈QQ左滑删除效果的制作,本ScrollDeleteView跟QQ的实现思路有些差别,QQ的实现是将整块列表作为一个容器操作的,使得效果更加绚丽,更好的控制左滑删除的效果和事件分发冲突,本View不存在滑动冲突。 先讲解一下我的思路,这个列表中承载的是ScrollDeleteView,分为两个部分 1.cotentView; 2.隐藏的View; 那么我们怎么让其滑动起来?原创 2017-03-04 19:03:33 · 885 阅读 · 2 评论 -
淘宝动画
今天来写一个淘宝的一个小动画,一看觉得挺简单的,但是实际操作起来,感觉有点麻烦,遇到的问题也比较多,不过好在模仿出来了,好了给大家看看效果。 这是老版本的,模拟器上面的和现版本的不一致 这个是新版本的,下面的布局Bi老版本要稍微复杂一点。接下来看看主界面的布局结构,最外面的是一个ViewGroup,然后就是一个“+”的View,再就是文本。 下面我们就来完成这个View的书写,先定原创 2017-03-12 22:31:09 · 250 阅读 · 0 评论 -
项目中的OkHttp工具(简单级别的)
在项目中网络请求要保证当界面退出的时候要能让资源顺利释放掉,也就是要防止内存泄漏。还要保证工具的简单和科学性。 下面我就简单谈谈我在公司用到的网络工具,我简单实现下。 @定义BaseCallback接口,声明响应规则。 @定义BacallbackImpl抽象类,在项目总一般要将erro集中处理,所以就实onFailure方法 @定义OkCallback类来承载回调接口,一般回调接口都是在原创 2017-03-26 18:46:42 · 510 阅读 · 0 评论 -
飞机大战(下篇:逻辑)
上一篇中,我们已经成功的绘制了背景,用户飞机,敌机,子弹,那么这篇我们将检查碰撞,回收资源1.碰撞 //检查子弹和敌船是否相撞 List<ZiDan> ziDanCop = new ArrayList<>(); for (int i = 0; i <mZiDanList.size() ; i++) { ziDanCop.add(mZiDanL原创 2017-02-20 23:07:49 · 990 阅读 · 0 评论 -
Android AIDL
android的AIDL(Android Interface Definition Language),也就是Android的接口定义语言,用于IPC通信的一套协议。凡是要通过AIDL方式进行IPC通信的,就必须遵守该规范。今天实测魅族部分机型默认不支持AIDL,官方答复是防止app互相唤醒,提高用户体验……哎呀我去总结一下AIDL实现遇到的问题 1.在AndroidStudio的环境下如何新建一原创 2017-03-19 22:25:15 · 376 阅读 · 0 评论 -
五子棋的实现
大家好,今天我来说说五子棋游戏的实现. 五子棋,包涵了棋盘和棋子,在这里我使用BitMap实现了棋盘和棋子,通过SurfaceView(对SurfaceView不熟悉的同学,可以看看其他博客了解一下)来展示BitMap,通过在工作线程中在BitMap上绘制棋盘和棋子,也就是使用二级缓存。这样减轻了View的绘制负担,提高了游戏的流畅度.废话不多说,上图. 棋盘是正方形,棋子是绘制的BitMap:原创 2017-02-18 00:58:53 · 860 阅读 · 0 评论 -
RecycleView的UP和Down加载
由于项目中使用到了协调者 布局,需要与其协调配合的可滑动的View,开始用到了ListView+NestedScrollView的方案,但是各种问题出来了,解决上拉刷新和下拉加载的方案:重写NestedScrollView,判断其是否滑动到底部,这样的思路下去就实现了这个功能,但是ListView+ScrollVIew的组合是很不好的,Google的建议是这两者是不能一起用的,实测getView()原创 2017-02-26 20:53:02 · 587 阅读 · 0 评论 -
自定义商品详情页
大家好,当你看到一些购物类App的商品详情页时,是不是对它的分页处理感到眼前一亮呢,是不是对该情景下的逻辑想的十分清楚呢,那么今天我就简单的来谈谈如何优雅的实现这一功能。 实现的原理:我会定义一个Viewgroup,这个容器将装载着两个ScrollView,分别表示着第一页和第二页。其中我还将ScrollView进行了封装,留有监听滑动到顶部和底部的监听。之后,我们将对事件进行拦截处理,下面代原创 2017-03-30 17:52:26 · 3203 阅读 · 0 评论 -
Android平台快速集成当下流行平台分享
前言集成jar包微信微信接入指南在app级别的buildgradle中添加如下依赖QQQQ接入指南导入qq_simplejar包即可新浪微博新浪微博接入指南导入weiboSDKCore_314jar包导入so文件见下图在在app级别的buildgradle中添加资源设置配置清单文件及回调Activity编码微信文件名称必须是wxapi两个回调Activity必须是WXE原创 2017-06-30 22:41:07 · 1416 阅读 · 0 评论