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,一经查实,立即删除!

相关文章

Linux下MySQL 安装配置

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

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;包含…

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…

PHP-Windows下搭建PHP-MSF环境【原创】

环境:   Windows7 64位   php-7.0.19   php-swoole-1.9.15   php-yac-2.0.2   php-redis-3.1.2   php-mongodb-1.2.10 遇坑: Cygwin: 不能默认使用 Windows 自带的 mingw git&#xff0c;否则报"fatal: Unable to create temporary file: Result too large&qu…

adb 启动命令,pc启动两个微信,INSTALL_FAILED_CONFLICTING_PROVIDER

adb kill-server 在关闭adb服务后&#xff0c;要使用如下的命令启动adb服务。 adb start-server 电脑启动两个微信 进入安装目录下。cmd The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER 错误 解决方法 1所示就是冲突的authorities.2所示…

微信小程序登录 更新中

小程序登录文档地址 0、下面的时序图必须要掌握。 1、获取code&#xff0c;向开发者服务器发送 2、开发者服务器根据code获取 需要准备appid、appsecret、code 调用接口文档code2Session const result await superagent.get(https://api.weixin.qq.com/sns/jscode2session).…

android 重叠view 重叠布局,按比例布局

按比例布局 宽度满屏&#xff0c;高度9:16 <androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width"match_parent"android:layout_height"wrap_content"><RelativeLayoutandroid:layout_width"match_parent"androi…

git常用命令,项目删除原有github连接并重新连接,回滚,下拉分支代码,切换分支

下拉分支代码 $ git clone https://gitea.https.xiaozhuschool.com/APKDevelopment/YouYuanSellingWineMachine.git -b dev 连接 -b 分支名称 切换分支 $ git checkout -b dev 查看全部分支 $ git branch -a git重要的三个命令stash, checkout, reset的一些总结 adb shell &l…

普通树与二叉树的相互转化及哈夫曼树的了解

普通树与二叉树的相互转化及哈夫曼树的了解 二叉树与普通树的转化 二叉树的种种特性使得它更便于处理&#xff0c;如果能将普通树转化成二叉树就好了。 普通树 -> 二叉树 回忆孩子兄弟表示法&#xff0c;有第一孩子域&#xff08;左孩子&#xff09;&#xff0c;还有左孩子的…