最近QQ更新了qq空间消息列表。天天动听也使用了那效果。而且越来越多的android应用都在使用,咱们不能落后啊!

得紧跟时代的步伐,不然就out了。 看起来不错分享下咯!

首先贴一下效果图,因为gif动态图片不懂怎么搞。下次一定改进。

贴下代码先:

自定义了滑动时背景颜色渐变

  1. package com.seven.fadingdemo;
  2. import com.seven.fadingactionbardemo.R;
  3. import android.annotation.SuppressLint;
  4. import android.content.Context;
  5. import android.graphics.drawable.Drawable;
  6. import android.util.AttributeSet;
  7. import android.view.MotionEvent;
  8. import android.widget.ImageView;
  9. import android.widget.LinearLayout;
  10. /**
  11. * 定义的控件布局
  12. *
  13. * @author seven2729
  14. */
  15. public class FadingScrollView extends LinearLayout {
  16. private LinearLayout mActionBar;
  17. private Drawable mBgDrawable;
  18. private ImageView fadingBar;// title渐变的控件
  19. private int fadingHeight; // 可隐藏的控件高度
  20. private int oldY;
  21. private int fadingOffset;
  22. public static final int ALPHA_START = 20;
  23. public static final int ALPHA_END = 255;
  24. public FadingScrollView(Context context) {
  25. this(context, null);
  26. }
  27. public FadingScrollView(Context context, AttributeSet attrs) {
  28. this(context, attrs, 0);
  29. }
  30. @SuppressLint("NewApi")
  31. public FadingScrollView(Context context, AttributeSet attrs,
  32. int defStyleAttr) {
  33. super(context, attrs, defStyleAttr);
  34. setOrientation(VERTICAL);
  35. }
  36. @Override
  37. protected void onFinishInflate() {
  38. super.onFinishInflate();
  39. fadingBar = (ImageView) findViewById(R.id.fading_bar);
  40. }
  41. @Override
  42. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  43. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  44. fadingHeight = fadingBar.getMeasuredHeight() - fadingOffset;// title渐变的控件距离
  45. }
  46. @SuppressLint("ClickableViewAccessibility")
  47. @Override
  48. public boolean onTouchEvent(MotionEvent ev) {
  49. switch (ev.getAction()) {
  50. case MotionEvent.ACTION_DOWN:
  51. oldY = (int) ev.getY();
  52. break;
  53. case MotionEvent.ACTION_MOVE:
  54. int scrollY = getScrollY();
  55. int y = (int) ev.getY();
  56. int deltaY = y - oldY;
  57. int willScrollY = scrollY - deltaY;
  58. if (willScrollY > fadingHeight)
  59. {// 不做操作颜色保持不变
  60. // willScrollY = fadingHeight;
  61. }
  62. else
  63. {// 颜色渐变
  64. updateActionBarAlpha(willScrollY * (ALPHA_END - ALPHA_START)
  65. / fadingHeight + ALPHA_START);
  66. }
  67. if (willScrollY < 0) {
  68. willScrollY = 0;
  69. }
  70. scrollTo(0, willScrollY);
  71. oldY = y;
  72. break;
  73. case MotionEvent.ACTION_UP:
  74. break;
  75. }
  76. return true;
  77. }
  78. public void bindingActionBar(LinearLayout actionBar) {
  79. mActionBar = actionBar;
  80. }
  81. @SuppressWarnings("deprecation")
  82. public void setActionBarBgDrawable(Drawable bgDrawable) {
  83. if (mActionBar == null) {
  84. try {
  85. throw new Exception(
  86. "Please try to binding the actionBar before set it's background.");
  87. } catch (Exception e) {
  88. e.printStackTrace();
  89. }
  90. }
  91. mBgDrawable = bgDrawable;
  92. mBgDrawable.setAlpha(ALPHA_START);
  93. mActionBar.setBackgroundDrawable(mBgDrawable);
  94. }
  95. @SuppressWarnings("deprecation")
  96. public void setActionBarAlpha(int alpha) throws Exception {
  97. if (mActionBar == null || mBgDrawable == null) {
  98. throw new Exception(
  99. "acitonBar is not binding or bgDrawable is not set.");
  100. }
  101. mBgDrawable.setAlpha(alpha);
  102. mActionBar.setBackgroundDrawable(mBgDrawable);
  103. }
  104. void updateActionBarAlpha(int alpha) {
  105. try {
  106. setActionBarAlpha(alpha);
  107. } catch (Exception e) {
  108. e.printStackTrace();
  109. }
  110. }
  111. public void setFadingOffset(int height) {
  112. fadingOffset = height;
  113. }
  114. }

然后就是代码的使用了,根据自己的需要设置大小或者颜色。

  1. package com.seven.fadingdemo;
  2. import com.seven.fadingactionbardemo.R;
  3. import android.annotation.SuppressLint;
  4. import android.app.Activity;
  5. import android.graphics.drawable.ColorDrawable;
  6. import android.os.Bundle;
  7. import android.widget.LinearLayout;
  8. /**
  9. * 主页展示页面
  10. *
  11. * @author seven2729
  12. */
  13. public class MainActivity extends Activity {
  14. private LinearLayout mLayout;
  15. private FadingScrollView fadingScrollView;// 自定义滑动布局
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. // requestWindowFeature(Window.FEATURE_NO_TITLE);
  20. setContentView(R.layout.activity_main);
  21. fadingScrollView = (FadingScrollView) findViewById(R.id.root);
  22. initLinearLayout();
  23. }
  24. /**
  25. * 布局初始化
  26. */
  27. @SuppressLint({ "Recycle", "InlinedApi" })
  28. void initLinearLayout() {
  29. //初始化fadingScrollView的一些信息
  30. mLayout = (LinearLayout) findViewById(R.id.lyout_title);
  31. ColorDrawable bgDrawable = new ColorDrawable(getResources().getColor(
  32. R.color.color_blue));
  33. fadingScrollView.bindingActionBar(mLayout);// 设置渐变布局
  34. fadingScrollView.setActionBarBgDrawable(bgDrawable);// 设置渐变颜色
  35. }
  36. }
颜色值的代码:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <color name="white">#FFFFFF</color>
  4. <color name="black">#000000</color>
  5. <color name="transparent">#00000000</color>
  6. <color name="color_blue">#50BDFB</color>
  7. </resources>

因为最近有在研究,所以找点资料自己修改了。改成自己需要的

如有需要可以  下载源码

如源码有偏差请根据博文修改!

欢迎转载,转载请注明出处:http://blog.csdn.net/seven2729/article/details/48372851

android 仿QQ好友动态 title滑动渐变相关推荐

  1. android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果

    本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...

  2. android 仿qq好友列表分组效果及联系人分组效果

     历史记录仿QQ好友列表的动态效果 以及联系人的分组效果 QQ朋友分组的功能做的不错,大家都很认可,那么到底他的分组并且滑动的时候,标题能停留在顶部是如何实现的呢?今天从网上搜索了一下资料,自己运行了 ...

  3. Android 仿QQ好友分组列表、ExpandableListView的使用详解

    ListView只能显示一级列表,如果我们需要像QQ好友列表的那样的效果,就需要用到ExpandableListView,入门新手可能对该控件不是很熟悉,下面就详解一下基本用法,其实跟ListView ...

  4. Android仿QQ好友列表分组实现增删改及持久化

    Android自带的控件ExpandableListView实现了分组列表功能,本案例在此基础上进行优化,为此控件添加增删改分组及子项的功能,以及列表数据的持久化. Demo实现效果:     Dem ...

  5. android 仿qq发动态,Android opengl 实现动态贴纸(仿QQ的拍摄)

    回顾 在前面视频录制篇尾(https://www.jianshu.com/p/4f63b2436401)中有提到视频录制+人脸识别+贴纸的想法,而上一篇(https://www.jianshu.com ...

  6. Android 仿QQ登录动态背景

    效果图片: 1, 自定义视频类 继承VideoView public class CustomVideoView extends VideoView {public CustomVideoView(C ...

  7. Android:仿手机QQ好友动态的ListView

    1.介绍: 本博客使用XListView模仿Android版QQ好友动态的ListView效果.效果截图如下: 效果图1 效果图2 这里面主要涉及的是ListView的布局问题,让我们看一下Item的 ...

  8. android 仿qq修改头像,Qt:小项目仿QQ修改头像界面,技术点记录

    最近写了一个修改头像功能的UI,布局参考了QQ目前的修改头像界面.如下图 这里主要说明一下两个地方的技术:1.头像图片上层的遮罩层,圆形外部为灰色,内部为全透明:2.上传图片宽高比例可以通过鼠标拖拽移 ...

  9. Android仿QQ空间底部菜单

    之前曾经在网上看到Android仿QQ空间底部菜单的Demo,发现这个Demo有很多Bug,布局用了很多神秘数字.于是研究了一下QQ空间底部菜单的实现,自己写了一个,供大家参考.效果如下图所示:  点 ...

最新文章

  1. 结对编程之四则运算(马仪生、李瑞恒)
  2. latex文档的优点和使用小tips
  3. boost::program_options::options_description相关的测试程序
  4. 数论练习(1)——取余运算(快速幂)
  5. 转载:第一次负责项目的总结
  6. HTML里Dom onload和jQuery document ready这两个事件的区别
  7. 卓有成效的管理者--总结
  8. java的基础语法和数据类型,IDEA
  9. Spring Boot笔记-发送纯字符串邮件及带附件邮件
  10. 面试时说Redis是单线程的,被喷惨了!
  11. 归并排序(merge sort)算法实现
  12. gc日志一般关注什么_JVM(23)JVM的Full GC日志
  13. iOS应用日志:开始编写日志组件与异常日志
  14. 将数所有奇数移到数组前java_全国2014年4月自考Java语言程序设计(一)真题
  15. 最舒服的颜色搭配值,很有用哦,特别是做设计的!!
  16. MD5加密----------
  17. dva是什么游戏_守望先锋:DVA这个皮肤小蛮腰不算什么,全部细节是这个小脚丫...
  18. C# ActionT 委托
  19. 对学生任务博客的评分练习
  20. MODIS 产品介绍

热门文章

  1. matlab时间转为数字,如何将日期数组(格式'mm/dd/yy HH:MM:SS')转换为数字?
  2. c#飞行棋游戏(控制台)
  3. 隐私保护新观点(信息防泄漏的意义)
  4. UNCTF2019新星赛长安十二时辰write up
  5. 如何免费下载ACM数字图书馆文献
  6. 区块链、货币和社交扩展性 1
  7. 程序员每天晚上都去翻垃圾,竟然年入 60 万美元?
  8. 一览Polkadot平行链Moonbeam生态的应用
  9. CentOS 7 分区方案
  10. 做管件网络销售之前,必须要做的三件事