android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部

1、创建  ScrollListener 接口监听滑动距离

public interface ScrollListener {void onScrollChanged(ScrollListenerView scrollView, int x, int y, int oldX, int oldY);
}

 

view阴影属性

android:elevation="4dp"

2、重写 ScrollView  自定义  ScrollListenerView

 

public class ScrollListenerView extends ScrollView {private ScrollListener scrollViewListener = null;public ScrollListenerView(Context context) {super(context);}public ScrollListenerView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public ScrollListenerView(Context context, AttributeSet attrs) {super(context, attrs);}public void setScrollListener(ScrollListener scrollViewListener) {this.scrollViewListener = scrollViewListener;}@Overrideprotected void onScrollChanged(int x, int y, int oldX, int oldY) {super.onScrollChanged(x, y, oldX, oldY);if (scrollViewListener != null) {scrollViewListener.onScrollChanged(this, x, y, oldX, oldY);}}
}

 

判断scrollView是否滚动到底部方法

@Override
protected void onScrollChanged(int x, int y, int oldX, int oldY) {super.onScrollChanged(x, y, oldX, oldY);if (scrollViewListener != null) {scrollViewListener.onScrollChanged(this, x, y, oldX, oldY);}if (getScrollY() + getHeight() >= computeVerticalScrollRange()) {Log.d("lgq", "------滚动到最下方------");} else {Log.d("Lgq", "没有到最下方");}
}

 

3、在layout xml文件使用ScrollListenerView

<com.tianxinyw.mapclient.views.ScrollListenerViewandroid:id="@+id/slv"android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="none"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent">
</RelativeLayout></com.tianxinyw.mapclient.views.ScrollListenerView>

上下层标题渐变色布局,titlelitwo是下层

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/activity_popup"android:orientation="vertical"><LinearLayoutandroid:id="@+id/titlelitwo"android:layout_width="match_parent"android:layout_height="38dp"android:background="@color/homeiconokc"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/titletetwo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="天鑫计费2"android:textColor="@color/white"android:textSize="16dp"android:textStyle="bold"/></LinearLayout><LinearLayoutandroid:id="@+id/lishititleli"android:layout_width="match_parent"android:layout_height="38dp"android:background="@color/homeiconokc"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/lishititlete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="天鑫计费"android:textColor="@color/white"android:textSize="16dp"android:textStyle="bold"/></LinearLayout>

 

 

4、Activity 实现滑动距离监听接口

public class HomeFragment extends BaseFragment implements ScrollListener{

初始化 

@BindView(R.id.slv)
ScrollListenerView slv;

设置监听

slv.setScrollListener(this);

实现方法:

@Override
public void onScrollChanged(ScrollListenerView scrollView, int x, int y, int oldX, int oldY) {if (y - oldY > 0&&y>0) {float f = (y + 0f) / 400;//滑动距离350pxif (f > 1) {f = 1f;}if (f < 0) {f = 0;}if (f > 0 && f < 0.3) {f = (float) 0.333;}Log.i("lgq", "......向上滑。。。" + f + ".......y====" + y);lishititleli.setBackgroundColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.homeiconokc), (int) (1 - f * 1 * 0xff)));lishititlete.setTextColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.white), (int) (1 - f * 1 * 0xff)));titlelitwo.setBackgroundColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.homeiconokc), (int) (f * 1 * 0xff)));titletetwo.setTextColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.white), (int) (f * 1 * 0xff)));} else if (y-oldY<0&&y>=0){float f = (y + 0f) / 400;//滑动距离350pxif (f > 1) {f = 1f;}if (f < 0) {f = 0;}Log.e("lgq", "......向xia滑。。。" + f + ".......y====" + y + "......zhi====" + (1 - f * 1 * 0xff) + ".....yy===" + f * 1 * 0xff);if (y <= 0||f<0.01) {lishititleli.setBackgroundColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.homeiconokc), (int) (1 * 1 * 0xff)));lishititlete.setTextColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.white), (int) (1 * 1 * 0xff)));return;}lishititleli.setBackgroundColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.homeiconokc), (int) (1 - f * 1 * 0xff)));lishititlete.setTextColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.white), (int) (1 - f * 1 * 0xff)));titlelitwo.setBackgroundColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.homeiconokc), (int) (f * 1 * 0xff)));titletetwo.setTextColor(Utils.changeAlpha(ContextCompat.getColor(getActivity(), R.color.white), (int) (f * 1 * 0xff)));}}

工具方法:

/*** 修改颜色透明度* @param color* @param alpha* @return*/
public static int changeAlpha(int color, int alpha) {int red = Color.red(color);int green = Color.green(color);int blue = Color.blue(color);return Color.argb(alpha, red, green, blue);
}

 

实现效果:向上滑动渐变颜色,显示隐藏view

 

 

demo链接:https://download.csdn.net/download/meixi_android/10966003

 

 

附:左滑右滑手势

 //渐变色float x1 = 0;float x2 = 0;private int nowpersion = 0;@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {
//            Log.i("lgq","ssssMainActivity_dispatchTouchEvent==="+ev.getX());x1 = ev.getX();}return super.dispatchTouchEvent(ev);}@Overridepublic boolean onTouch(View v, MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_MOVE) {x2 = event.getX();float h = x1 - x2;//            Log.i("lgq","eee==滑动距离aaa===="+(h)+"......"+nowpersion+"...."+x1);float f = (h + 0f) / 640;//滑动距离350pxif (f > 1) {f = 1f;}if (f < 0) {f = 0;}if (nowpersion == 0 && h < 0) {return false;} else if (nowpersion == 0 && h > 0) {if (f < 0.4) {return false;}TextView textView = tabLayout.getTabAt(1).getCustomView().findViewById(R.id.tab_iv);TextView textView0 = tabLayout.getTabAt(0).getCustomView().findViewById(R.id.tab_iv);textView.setTextColor(changeAlpha(ContextCompat.getColor(MainActivity.this, R.color.textlan), (int) (f * 1 * 0xff)));textView0.setTextColor(changeAlpha(ContextCompat.getColor(MainActivity.this, R.color.texthui), (int) (f * 1 * 0xff)));}}return false;}/*** 修改颜色透明度* @param color* @param alpha* @return*/public  int changeAlpha(int color, int alpha) {int red = Color.red(color);int green = Color.green(color);int blue = Color.blue(color);return Color.argb(alpha, red, green, blue);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mpvue 从零开始 女友的来电 4 flyio

女友给我打电话&#xff0c;我的号码是fly.js&#xff0c;可以进行数据请求。 1、安装需要的库flyio、qs yarn add flyio qs2、src目录下新建api/index.js&#xff0c;填写下面代码 import Fly from flyio/dist/npm/wx; import qs from qs;const fly new Fly(); const host…

Linux下MySQL 安装配置

MySQL 是最流行的关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;目前属于Oracle公司。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。 MySQL由于其体积小、速度快、总体拥有成本低&#xff0c;尤其是开放源码这一特点&#xff0c;一般中小型…

向oracle表空间添加一个数据文件命令

向表空间添加一个数据文件SQL语句&#xff1a; ALTER TABLESPACE sde ADD DATAFILED:\app\Administrator\oradata\orcl\sde1 SIZE 400M; 记得加上自动扩展的命令&#xff1a;autoextend on

android 监听webView滑动距离和标题栏颜色渐变

重写webView之 X5WebView import android.annotation.SuppressLint; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.view.ActionMode; import android.view.Menu; …

mpvue 从零开始 女友拉黑了我 5 不在以下request 合法域名列表中,请参考文档

上一篇&#xff0c;才调通了接口&#xff0c;试了几次&#xff0c;都成功&#xff0c;突然&#xff0c;微信报错了。 VM6239:1 https://www.easy-mock.com 不在以下 request 合法域名列表中&#xff0c;请参考文档&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/api…

Javascript与C#中使用正则表达式

JavaScript RegExp 对象 新建一个RegExp对象 new RegExp(pattern,[attributes]) 注&#xff1a; \d需要使用[0-9]来代替 参数 参数 pattern 是一个字符串&#xff0c;指定了正则表达式的模式或其他正则表达式。 参数 attributes 是一个可选的字符串&#xff0c;包含…

Windows 不能在 本地计算机 启动 SQL Server 服务 错误代码126

Windows 不能在 本地计算机 启动 SQL Server 服务 错误代码126 在使用SQL2005&#xff08;或2008&#xff09;是可能会遇到错误提示&#xff1a; “Windows 不能在 本地计算机 启动 SQL Server 。 有关更多信息&#xff0c;查阅系统事件日志。如果这是非 Microsoft 服务&…

android Calendar使用 年月日时分秒

int myhour0;int mymin0;int mymonth0;int myday0;int twoday0;try {final Calendar c Calendar.getInstance();c.setTimeZone(TimeZone.getTimeZone("GMT8:00"));//获取当前时间的年月日String mDay String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份…

微信小程序报错 .wxss 无法找到

使用mpvue 报错&#xff0c;无法找到wxss文件&#xff0c;解决方法&#xff0c;删除dist目录里面的内容。重重新编译&#xff0c;解决问题。

《结对-贪吃蛇-设计文档》

设计人员&#xff1a; 张晓亮、李国峰 环境搭建&#xff1a; 本系统有Java语言编写。需要在本地搭建Java运行环境。1&#xff09;下载JDK&#xff08;官网下载1.7以上版本&#xff09;2&#xff09;下载eclipseIDE开发软件。本人是Mac系统所以不需要额外配置环境变量。 可行性分…

FileZilla Server 搭建FTP服务器

FileZilla Server 搭建FTP服务器 1. 背景:在免费&#xff08;此类工具免费者很多&#xff09;中&#xff0c;我的选择是FileZilla&#xff0c;因为它小巧、非常强大、也比较易用&#xff0c;且为开源软件&#xff0c;发展前景不错。用户也比较多&#xff0c;有问题容易解决。  …

mpvue 从零开始 女友的收纳盒 6 mpvue-entry入口管理

给女友买了很多化妆品&#xff0c;琳琅满目&#xff0c;傻傻分不清&#xff0c;需要有一个魔法工具&#xff0c;自动将化妆品分类到收纳盒对应的格子里面&#xff0c;这就是mpvue-entry要做的事情。 1、安装mpvue-entry yarn add mpvue-entry2、在webpack.base.conf.js中进行配…

android Intent传递对象,startActivityForResult使用, setResult(RESULT_OK)使用,getArguments(),

Bundle bundle this.getIntent().getExtras(); if(bundle !null){ Fragment、getArguments() 传 public static DriverHistoryFragment getInstance(String tag) {Bundle bundle new Bundle();bundle.putString(TAG, tag);DriverHistoryFragment fragment new DriverHist…

64位Windows2003 Enterprise sp2 上64位Oracle10.2.0.1升级到Oracle10.2.0.3具体步骤

64位Windows2003 Enterprise sp2 上64位Oracle10.2.0.1升级到Oracle10.2.0.3具体步骤 错误描述&#xff1a;64位的Oracle10.2.0.1版本在64位Windows2003 Enterprise sp2上有一个很严重的bug&#xff0c;Oracle进程的先耗尽系统的所有虚拟内存&#xff0c;然后耗尽系统的真实内存…

mac安装mongodb

1、去官网进行下载mongodb官网 2、将下载好的压缩包解压&#xff0c;将解压出的文件夹下的内容全部复制到新的路径下。 cp -r mongodb-osx-x86_64-4.0.4 /usr/local/mongodb把 MongoDB 的二进制命令文件目录&#xff08;安装目录/bin&#xff09;添加到 PATH 路径中&#xff…

android 圆形头像,自定义圆形ImageView

<!--头像--><RelativeLayoutandroid:id"id/ll_petInfo"android:layout_width"50dp"android:layout_height"50dp"android:layout_marginBottom"10dp"android:layout_marginTop"1dp"android:gravity"center&quo…