自定义控件-视觉特效


老规矩,先放效果图


继承ListView ,添加头布局,实现动态改变现实图片的高度,显示视觉效果,重要的是在ViewTree节点结束后获取图片的实际显示高度

 plv_parallax.addHeaderView(view);//添加渲染监听,当渲染完成后传出ImageView,难道只能放这儿吗iv_parallax.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {plv_parallax.init(iv_parallax);iv_parallax.getViewTreeObserver().removeGlobalOnLayoutListener(this);}});plv_parallax.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Cheeses.NAMES));}


1.创建构造函数,对图片进行测量高度

  public ParallaxListView(Context context, AttributeSet attrs) {super(context, attrs);}public ParallaxListView(Context context) {super(context);}/*** 获取图片初始和原始高度** @param view*/public void init(final View view) {this.view = (ImageView) view;globalHeight = view.getHeight();intriHeight = ((ImageView) view).getDrawable().getIntrinsicHeight();System.out.println(globalHeight);}

2.实现overScrollBy(),边界滑动事件,通过方法中的参数获取偏离度,以及是否下拉

 /*** 边界滑动事件** @param deltaX         拖拽的力道 向下为-* @param deltaY* @param scrollX* @param scrollY* @param scrollRangeX   超出边界X范围* @param scrollRangeY   超出边界Y范围* @param maxOverScrollX 超出边界最大X* @param maxOverScrollY 超出边界最大Y* @param isTouchEvent   是否是手指触摸* @return*/@Overrideprotected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {System.out.println(deltaX + "--" + deltaY + "--" + scrollY + "--" + scrollRangeY + "--" + maxOverScrollY);if (isTouchEvent && deltaY < 0) {flag = true;//获取新的距离,每次都是加上上一个位置int newHeight = -deltaY + view.getHeight();//更新位置System.out.println("newHeight: " + newHeight);//设置位置view.getLayoutParams().height = newHeight;//请求更新view.requestLayout();} else {//如果不是下拉状态,就返回falseflag = false;}return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);}

2.根据手指抬起的点设定值动画,回弹效果

/*** 手指抬起后动态的点*/private float setHeight;@Overridepublic boolean onTouchEvent(MotionEvent ev) {switch (ev.getAction()) {case MotionEvent.ACTION_UP://手指刚抬起的图片高度setHeight = view.getHeight();//抬起手指后设定falg = false;flag = false;//设定值动画ValueAnimator va = ValueAnimator.ofFloat(setHeight, globalHeight);va.setDuration(2000);va.start();//动画监听,为了获取动态的数值va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {//获取动画设定的分数值float fraction = animation.getAnimatedFraction();//获取动画设定的间值setHeight = (float) animation.getAnimatedValue();System.out.println(setHeight);System.out.println(fraction);//动态shedding高度,并请求动画更新view.getLayoutParams().height = (int) setHeight;view.requestLayout();}});break;case MotionEvent.ACTION_DOWN://记录按下的点down_dot = (int) ev.getY();break;case MotionEvent.ACTION_MOVE://判断是否可以滑动if (flag) {//设定滑动int move2down = (int) (ev.getY() - down_dot);int newHeight = view.getHeight() + move2down / 15;System.out.println(newHeight + "-----");if (newHeight > intriHeight) {//设定图片可以放置的最大值newHeight = intriHeight;}//请求刷新Layout// view.getLayoutParams().height = newHeight;//  view.requestLayout();}break;}return super.onTouchEvent(ev);}

4,简单的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.oblivion.parallax.MainActivity"><com.oblivion.ui.ParallaxListView
        android:id="@+id/plv_parallax"android:layout_width="match_parent"android:layout_height="match_parent"></com.oblivion.ui.ParallaxListView>
</RelativeLayout>

自定义控件-视觉特效相关推荐

  1. Unity创建游戏VFX视觉特效-初级到中级

    MP4 |视频:h264,1280×720 |音频:AAC,44100 Hz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.36 GB |时长:4h 17m 本课程是关于用Uni ...

  2. Autodesk Flame 2022 for Mac - 高级三维视觉特效合成软件

    Autodesk Flame 2022 for Mac是一款功能强大的3D视觉特效合成软件,专为帮助设计师进行 3D 合成.视觉效果和编辑整理而开发.Autodesk Flame 2022 Mac版提 ...

  3. fcpx视觉特效插件包 - FxFactory for Mac 支持M1芯片

    FxFactory Pro for mac是Mac OS平台上的一个视觉特效插件包合集,它为Final Cut Express和After Effects的Adobe插件的最大集合.可增强Final ...

  4. 8个超棒的使用javascript开发的视觉特效网站

    日期:2012-8-17  来源:GBin1.com 随着flash的落寞及其HTML5和CSS3的发展,更多的网站开始使用javascript,CSS3和HTML5来开发炫酷的特效.今天我们挑选了8 ...

  5. python可以写什么视觉特效_Python实现视觉特效:一行命令给头像自动戴上口罩的案例...

    Python实现视觉特效:一行命令给头像自动戴上口罩的案例 发布时间:2020-07-23 16:22:40 来源:亿速云 阅读:90 作者:清晨 小编给大家分享一下Python实现视觉特效:一行命令 ...

  6. unity 特效_介绍几个 Unity 开源视觉特效项目

    今天为大家介绍几个日本 Unity 大神 Keijiro 的视觉特效项目.关于 Keijiro 可以参见下面的文章. https://connect.unity.com/p/unite-2019-zh ...

  7. 电影级视觉特效插件:Red Giant VFX Suite for mac

    VFX Suite破解为After Effects中的逼真视觉效果复合提供了强大的工具包.使用Supercomp,光和大气效果可以以比使用简单的2D图层堆栈建模更自然的方式与所有图层和场景元素进行交互 ...

  8. 视觉特效视觉插件包FxFactory pro 8 集各fcpx插件于一体

    FxFactory pro 8   视觉特效插件包集各fcpx插件于一体!包含了成百上千的视觉效果,打包了很多插件 调色插件,转场插件,视觉插件,特效插件,文字插件,音频插件,可以说应有尽有. FxF ...

  9. 【SIGGRAPH】用【有说服力的照片真实】技术实现最终幻想15的视觉特效

    原文:西川善司 http://www.4gamer.net/games/075/G007535/20160726064/ 最终幻想15的演讲会场.相当大,听众非常多. 在本次计算机图形和交互技术大会[ ...

最新文章

  1. libpcap实现机制及接口函数
  2. Spark RDD使用详解4--Key-Value型Transformation算子
  3. 关于大型网站技术演进的思考(三)--存储的瓶颈(3)
  4. 【今日CV 计算机视觉论文速览】Thu, 28 Mar 2019
  5. JAVA开发血泪之路:一步步搭建spring框架
  6. 微赞dataconfig.php,php生成微信jssdk wx.config参数,调用js接口
  7. 指针以及二重指针的理解
  8. TFS -- 使用手记 (更新2009/12/3)
  9. python中int占几个字节_小白学python第1问: int 占几个字节?
  10. 常见的python算法题_python笔试常见题
  11. makefile编写
  12. 好程序员分享大数据入门教程:Hadoop和spark的性能比较
  13. 有哪些 Java 源代码看了后让你收获很多,代码思维和能力有较大的提升?
  14. 如何修改植物大战僵尸金币
  15. TCP/IP模型背后的内涵(一)
  16. 网站服务器商标属于哪类,网络平台商标注册属于什么类别?-商标分类表-猪八戒知识产权...
  17. C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。
  18. oracle exp0006,EXP-00006: 出现内部不一致的错误
  19. MYSQL及MSSQL安全设置
  20. hadoop +hbase+zookeeper 伪分布安装(超级无敌详细)

热门文章

  1. Android——横幅通知
  2. 巨头集体跨界,老玩家悄然出圈,谁在争夺6亿电竞用户?
  3. 大二Web课程设计——基于HTML+CSS+JavaScript+jquery手表商城购物网站(17页)
  4. PHP常说的SAPI是什么
  5. selenium碰到 href = ‘/‘ 这样的一个链接怎么办
  6. 互联网金融保弘实业理财投资|白领理财有哪些窍门
  7. 解决ios7.x越狱后静态壁纸变为空白
  8. python目标识别_10行Python代码实现目标检测
  9. 2022内蒙古最新建筑施工塔式起重机(建筑特种作业)模拟考试题库及答案
  10. 阿里云硬盘挂载与扩容