package com.example.extendsview_demo; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewTreeObserver; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements MyView.OnScrollViewListener{ private MyView scrollView; private ImageView iv_detail; private RelativeLayout layout_title; private TextView tv_titlebar; private int imgheight; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); scrollView = findViewById(R.id.scrollView); iv_detail = findViewById(R.id.iv_detail); layout_title = findViewById(R.id.layout_title); tv_titlebar = findViewById(R.id.tv_titlebar); //初始化,获取顶部大图的高 initListener(); //设置ScrollView的滚动监听 scrollView.setOnScrollViewListener(this); } //初始化 private void initListener() { //获取控件的视图观察者 ViewTreeObserver observer = iv_detail.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { //通过视图观察者监听得到顶端大图的高度 imgheight = iv_detail.getHeight(); } }); } @Override public void OnScrollView(MyView myView, int l, int t, int oldl, int oldt) { //如果当用户手指往上滑动的距离(也就是t值)小于0时那么就隐藏标题栏 if(t <= 0){ //设置标题栏为隐藏状态 tv_titlebar.setVisibility(View.GONE); //设置标题栏背景为透明色 layout_title.setBackgroundColor(Color.argb(0,0,0,0)); } //如果当用户手指往上滑动的距离大于0并且不能超过顶端大图的高度就设置标题栏显示 else if(t > 0 && t <= imgheight){ tv_titlebar.setVisibility(View.VISIBLE); //获取ScrollView向下滑动,图片消失部分的比例 float i = (float) t / imgheight; //根据这个比例,让标题栏的背景慢慢的由浅入深 float v = 255 * i; tv_titlebar.setText("继承式自定义控件"); tv_titlebar.setBackgroundColor(Color.YELLOW); layout_title.setBackgroundColor(Color.argb((int) v,255,255,255)); } } }
安卓继承式自定义控件实现标题栏渐变
猜你喜欢
转载自blog.csdn.net/gaoyiranblog/article/details/80342093
今日推荐
周排行