From 4756226a56b936d63a8e7deb96abe57bc0bcd1d6 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sun, 9 Mar 2025 13:44:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E9=AB=98=E7=99=BE=E5=88=86=E6=AF=94?= =?UTF-8?q?=E6=8B=89=E5=8A=A8=E8=BF=9B=E5=BA=A6=E6=9D=A1=E4=B8=8EViewPager?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aes/build.properties | 4 +- libaes/build.properties | 4 +- .../unittests/TestViewPageFragment.java | 4 +- .../studio/libaes/views/AOHPCTCSeekBar.java | 145 ++++-------------- .../src/main/res/layout/fragment_viewpage.xml | 20 --- .../main/res/layout/viewpage_aohpctcsb.xml | 19 +++ 6 files changed, 57 insertions(+), 139 deletions(-) diff --git a/aes/build.properties b/aes/build.properties index 4e72951..f7372af 100644 --- a/aes/build.properties +++ b/aes/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun Mar 09 11:30:17 HKT 2025 +#Sun Mar 09 05:43:05 GMT 2025 stageCount=9 libraryProject=libaes baseVersion=7.6 publishVersion=7.6.8 -buildCount=0 +buildCount=24 baseBetaVersion=7.6.9 diff --git a/libaes/build.properties b/libaes/build.properties index 24d0718..f7372af 100644 --- a/libaes/build.properties +++ b/libaes/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun Mar 09 11:30:09 HKT 2025 +#Sun Mar 09 05:43:05 GMT 2025 stageCount=9 libraryProject=libaes baseVersion=7.6 publishVersion=7.6.8 -buildCount=0 +buildCount=24 baseBetaVersion=7.6.9 diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/unittests/TestViewPageFragment.java b/libaes/src/main/java/cc/winboll/studio/libaes/unittests/TestViewPageFragment.java index a86e697..1c3b39f 100644 --- a/libaes/src/main/java/cc/winboll/studio/libaes/unittests/TestViewPageFragment.java +++ b/libaes/src/main/java/cc/winboll/studio/libaes/unittests/TestViewPageFragment.java @@ -192,7 +192,7 @@ public class TestViewPageFragment extends Fragment implements ViewPager.OnPageCh } void initAOHPCTCSeekBar() { - AOHPCTCSeekBar seekbar = mView.findViewById(R.id.fragmentviewpageAOHPCTCSeekBar1); + AOHPCTCSeekBar seekbar = views.get(3).findViewById(R.id.fragmentviewpageAOHPCTCSeekBar1); seekbar.setThumb(getActivity().getDrawable(R.drawable.ic_launcher)); //seekbar.setThumbOffset(200); //seekbar.setThumbOffset(1); @@ -207,7 +207,7 @@ public class TestViewPageFragment extends Fragment implements ViewPager.OnPageCh } void initAOHPCTCSeekBar2() { - AOHPCTCSeekBar seekbar = mView.findViewById(R.id.fragmentviewpageAOHPCTCSeekBar2); + AOHPCTCSeekBar seekbar = views.get(3).findViewById(R.id.fragmentviewpageAOHPCTCSeekBar2); seekbar.setThumb(getActivity().getDrawable(R.drawable.ic_call)); //seekbar.setThumbOffset(200); //seekbar.setThumbOffset(1); diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/views/AOHPCTCSeekBar.java b/libaes/src/main/java/cc/winboll/studio/libaes/views/AOHPCTCSeekBar.java index 7ba3d3f..a0b26b3 100644 --- a/libaes/src/main/java/cc/winboll/studio/libaes/views/AOHPCTCSeekBar.java +++ b/libaes/src/main/java/cc/winboll/studio/libaes/views/AOHPCTCSeekBar.java @@ -16,29 +16,21 @@ public class AOHPCTCSeekBar extends SeekBar { public static final String TAG = "AOHPCTCSeekBar"; - Context mContext; - - int thumbWidth = 1; - int progressBarWidth = 1; + volatile int thumbWidth = 1; + volatile int progressBarWidth = 1; // 设置按钮模糊右边边缘像素 - int blurRightDP = 1; + volatile int blurRightDP = 1; + // 是否从起点拉动的标志 + volatile boolean isStartSeek = false; - // 可开始拉动的起始位置(百分比值) - //static final int ENABLE_POST_PERCENT_X = 20; - //int seekablePosition; - // 最小拉动值,滑块拉动值要超过这个值,确定事件才会提交。 - //static final int TO_MIN_VALUE = 15; // 外部接口对象,确定事件提交会调用该对象的方法 OnOHPCListener mOnOHPCListener; - // 是否从起点拉动的标志 - boolean mIsStartTo = false; - // 拉动的滑动值 - int mnTo = 0; + public void setBlurRightDP(int blurRight) { this.blurRightDP = blurRight; } - + public void setOnOHPCListener(OnOHPCListener listener) { mOnOHPCListener = listener; } @@ -55,24 +47,6 @@ public class AOHPCTCSeekBar extends SeekBar { public AOHPCTCSeekBar(Context context, AttributeSet attrs) { super(context, attrs); initView(context); - - //LogUtils.d(TAG, "AOHPCTCSeekBar(...)"); - - // 获得TypedArray - //TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AToolbar); - // 获得attrs.xml里面的属性值,格式为:名称_属性名,后面是默认值 - //int colorBackgroud = a.getColor(R.styleable.ACard_backgroudColor, context.getColor(R.color.colorACardBackgroung)); - //int centerColor = a.getColor(R.styleable.AToolbar_centerColor, context.getColor(R.color.colorAToolbarCenterColor)); - //int endColor = a.getColor(R.styleable.AToolbar_endColor, context.getColor(R.color.colorAToolbarEndColor)); - //float tSize = a.getDimension(R.styleable.CustomView_tSize, 35); - //p.setColor(tColor); - //p.setTextSize(tSize); - //Drawable drawable = context.getDrawable(R.drawable.frame_atoolbar); - - //setBackground(context.getDrawable(R.drawable.acard_frame_main)); - - // 返回一个绑定资源结束的信号给资源 - //a.recycle(); } public AOHPCTCSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { @@ -81,110 +55,55 @@ public class AOHPCTCSeekBar extends SeekBar { } void initView(Context context) { - LogUtils.d(TAG, "initView(...)"); - mContext = context; -// Drawable thumbDrawable = getThumb(); -// if (thumbDrawable!= null) { -// int iconWidth = thumbDrawable.getIntrinsicWidth(); -// LogUtils.d(TAG, String.format("iconWidth %d", iconWidth)); -// seekablePosition = iconWidth; -// } - } - @Override - protected void onFinishInflate() { - super.onFinishInflate(); } @Override public boolean dispatchTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { - //LogUtils.d(TAG, "ACTION_DOWN"); - // 有效的拖动起始位置(ENABLE_POST_PERCENT_X)% - //int nEnablePostX = ((getRight() - getLeft()) * ENABLE_POST_PERCENT_X / 100) + getLeft(); - //int nEnablePostX = ((getRight() - getLeft()) * seekablePosition / 100) + getLeft(); - /*LogUtils.d(TAG, "event.getX() is " + Float.toString(event.getX())); - LogUtils.d(TAG, String.format("thumbWidth %d progressBarWidth %d", thumbWidth, progressBarWidth)); - LogUtils.d(TAG, String.format("mIsStartTo %s", mIsStartTo)); - */ + getParent().requestDisallowInterceptTouchEvent(true); if (thumbWidth + blurRightDP > event.getX() && event.getX() > 0) { - mIsStartTo = true; - return true; - //return super.dispatchTouchEvent(event); + isStartSeek = true; } -// if (!mIsStartTo) { -// resetView(); -// return false; -// } } else if (event.getAction() == MotionEvent.ACTION_MOVE) { - //LogUtils.d(TAG, "ACTION_MOVE"); - /*LogUtils.d(TAG, "event.getX() is " + Float.toString(event.getX())); - LogUtils.d(TAG, String.format("thumbWidth %d progressBarWidth %d", thumbWidth, progressBarWidth)); - LogUtils.d(TAG, String.format("mIsStartTo %s", mIsStartTo)); - */ - if (mIsStartTo) { - return super.dispatchTouchEvent(event); - } else { - return false; + if (isStartSeek) { + super.dispatchTouchEvent(event); } } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { - //LogUtils.d(TAG, Integer.toString(getProgress())); - // 提交100%确定事件 -// if (getProgress() == progressBarWidth) { -// //((getProgress() == 100) && (mnTo > TO_MIN_VALUE)) { -// //LogUtils.d(TAG, "Commit mnTo is " + Integer.toString(mnTo)); -// mOnOHPCListener.onOHPCommit(); -// resetView(); -// //return true; -// } else { -// resetView(); -// mIsStartTo = false; -// } -// - if (getProgress() == progressBarWidth) { - mOnOHPCListener.onOHPCommit(); - } - mIsStartTo = false; - resetView(); - return false; + getParent().requestDisallowInterceptTouchEvent(false); + if (getProgress() == progressBarWidth) { + mOnOHPCListener.onOHPCommit(); + } + // 重置控件状态 + setProgress(0); + isStartSeek = false; } - //LogUtils.d(TAG, "dispatchTouchEvent End"); - return super.dispatchTouchEvent(event); - } - - // 重置控件状态 - // - void resetView() { - setProgress(0); - mnTo = 0; - mIsStartTo = false; + return true; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = MeasureSpec.getSize(widthMeasureSpec); - int height = MeasureSpec.getSize(heightMeasureSpec); - LogUtils.d(TAG, String.format("width %d height %d", width, height)); + //int height = MeasureSpec.getSize(heightMeasureSpec); + //LogUtils.d(TAG, String.format("width %d height %d", width, height)); - // 使用width和height进行后续操作 - - // 获取SeekBar的图标 + // 获取SeekBar的图标宽度 Drawable thumbDrawable = getThumb(); if (thumbDrawable != null) { // 获取图标宽度 thumbWidth = thumbDrawable.getIntrinsicWidth(); - // 获取进度条宽度 - progressBarWidth = width;//getWidth();// - getPaddingLeft() - getPaddingRight(); - // 计算百分比 - //float percentage = (float) thumbWidth / progressBarWidth * 100; - LogUtils.d(TAG, String.format("thumbWidth %d progressBarWidth %d", thumbWidth, progressBarWidth)); - //LogUtils.d(TAG, String.format("Thumb width / ProgressBar width percentage: %f", percentage)); - - //seekablePosition = (int)percentage; - setThumbOffset(0); - setMax(progressBarWidth); } + + // 获取进度条宽度 + progressBarWidth = width; + + //LogUtils.d(TAG, String.format("thumbWidth %d progressBarWidth %d", thumbWidth, progressBarWidth)); + + // 设置图标位置 + setThumbOffset(0); + // 设置进度条刻度 + setMax(progressBarWidth); } } diff --git a/libaes/src/main/res/layout/fragment_viewpage.xml b/libaes/src/main/res/layout/fragment_viewpage.xml index c5efc52..33b577a 100644 --- a/libaes/src/main/res/layout/fragment_viewpage.xml +++ b/libaes/src/main/res/layout/fragment_viewpage.xml @@ -12,26 +12,6 @@ android:layout_height="wrap_content" android:text="AOHPCTCSeekBar"/> - - - - - - - - + + + + + + +