如何在我的应用程序上创建一个色彩过滤器

本文关键字:一个 过滤器 色彩 创建 我的 应用 程序上 应用程序 | 更新日期: 2023-09-27 18:14:19

我到处找都找不到答案。

我想知道如何在我的android应用程序的屏幕上做一个色调,所以当我向上滑动它就像你在向上滑动一个图层。

例如,我打开应用程序,在应用程序的主屏幕上有一个透明的灰色屏幕,我可以向上滑动它。

我知道这是可怕的解释,所以问,我会尽量更描述性。我正在使用visual studio和xamarin和c#为android应用程序。非常感谢:)。有什么建议吗

如何在我的应用程序上创建一个色彩过滤器

在页面上使用绝对布局。添加到所有儿童半透明框的顶部,背景颜色覆盖整个屏幕。实现手势识别器检测抛起。当检测到动画你的盒子出屏幕。如果你使用表单,那么手势识别器将在那个框的自定义渲染器中形式:

public class MyGestureListener : GestureDetector.SimpleOnGestureListener
{
    OverlayBox box;
    public void SetBox(OverlayBox box)
    {
        this.box = box;
    }
    public override bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    {
        Console.WriteLine($"OnFling velocityX={velocityX} velocityY={velocityY}");
        if (e2.RawY < e1.RawY) //add more constraints on X
        {
            Rectangle r = box.Bounds;
            r.Top = - r.Height;
            box.LayoutTo(r, 500);
        }
        //for fun
        Task.Delay(1000).ContinueWith(_ =>
        {
                Rectangle r1 = box.Bounds;
                r1.Top = 0;
                box.LayoutTo(r1, 500);
        }); 
        return base.OnFling(e1, e2, velocityX, velocityY);
    }
}

class OverlayBoxRenderer : ViewRenderer<OverlayBox, Android.Views.View>
{
    private readonly GestureDetector _detector;
    private readonly MyGestureListener _listener;
    public OverlayBoxRenderer()
    {
        _listener = new MyGestureListener();
        _detector = new GestureDetector(_listener);
    }
    protected override void OnElementChanged(ElementChangedEventArgs<OverlayBox> e)
    {
        if (e.NewElement == null)
        {
            this.Touch -= HandleTouch;
        }
        if (e.OldElement == null)
        {
            _listener.SetBox(e.NewElement);
            this.Touch += HandleTouch;
        }

    }
    void HandleTouch(object sender, TouchEventArgs e)
    {
        _detector.OnTouchEvent(e.Event);
    }

}