tzy
2021-05-14 0fa1534827bd21d763216550d11006fc1441c6cb
HDL_ON/UI/UI0-Stan/Controls/CompoundControls/SeekBarImageControl.cs
@@ -7,7 +7,8 @@
namespace HDL_ON.Stan
{
    /// <summary>
    /// 左右滑动的进度条控件
    /// <para>左右滑动的进度条控件(高度为54 左右间距为20)</para>
    /// <para>如果是加在PageLayout里面的话,加入父控件之后,请调用BindPageLayout()</para>
    /// </summary>
    public class SeekBarImageControl : DiyImageSeekBar
    {
@@ -112,20 +113,25 @@
        /// 上方显示的文本
        /// </summary>
        private Button btnTopView = null;
        /// <summary>
        /// 绑定PageLayout,事件冲突,需要特殊处理
        /// </summary>
        private PageLayout pageLayoutBind = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 左右滑动的进度条控件(高度为54 左右间距为20)
        /// <para>左右滑动的进度条控件(高度为54 左右间距为20)</para>
        /// <para>如果是加在PageLayout里面的话,加入父控件之后,请调用BindPageLayout()</para>
        /// </summary>
        /// <param name="i_width">宽度,非真实值,实际宽度会加上左右间距</param>
        public SeekBarImageControl(int i_width)
        {
            this.ProgressChangeDelayTime = 0;
            this.Width = Application.GetRealWidth(i_width) + Application.GetRealWidth(20) * 2;
            this.Width = Application.GetRealWidth(i_width) + m_SeekBarPadding * 2;
            this.Height = Application.GetRealHeight(54);
            //圆球的高度
            this.ThumbImageHeight = Application.GetRealHeight(54);
@@ -178,8 +184,27 @@
                this.OnStopTrackingTouchEvent -= this.MyStopTrackingTouchEvent;
                return;
            }
            if (this.pageLayoutBind != null && this.pageLayoutBind.ScrollEnabled == false)
            {
                //事件冲突,特殊处理,让pageLayout还原滑动
                this.pageLayoutBind.ScrollEnabled = true;
            }
            //弹起事件不需要判断时间
            this.ProgressChangedEvent(1, value);
        }
        /// <summary>
        /// 手指开始点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="value"></param>
        private void MyStartTrackingTouchEvent(object sender, bool value)
        {
            if (this.pageLayoutBind != null && this.pageLayoutBind.ScrollEnabled == true)
            {
                //事件冲突,特殊处理,让pageLayout不能滑动
                this.pageLayoutBind.ScrollEnabled = false;
            }
        }
        #endregion
@@ -237,11 +262,44 @@
        #region ■ 一般方法___________________________
        /// <summary>
        /// 绑定PageLayout
        /// </summary>
        public void BindPageLayout()
        {
            //获取PageLayout
            this.pageLayoutBind = this.GetParentPageLayout();
            if (this.pageLayoutBind == null) { return; }
            this.OnStartTrackingTouchEvent -= this.MyStartTrackingTouchEvent;
            this.OnStartTrackingTouchEvent += this.MyStartTrackingTouchEvent;
        }
        /// <summary>
        /// 获取父控件的PageLayout
        /// </summary>
        /// <returns></returns>
        private PageLayout GetParentPageLayout()
        {
            ViewGroup viewGroup = this.Parent;
            while (true)
            {
                if (viewGroup == null) { return null; }
                else if (viewGroup is PageLayout)
                {
                    return (PageLayout)viewGroup;
                }
                viewGroup = viewGroup.Parent;
            }
        }
        /// <summary>
        /// 控件摧毁
        /// </summary>
        public override void RemoveFromParent()
        {
            this.pageLayoutBind = null;
            this.ProgressChangedEvent = null;
            base.RemoveFromParent();
        }