31
31
import iknow .android .utils .thread .BackgroundExecutor ;
32
32
import iknow .android .utils .thread .UiThreadExecutor ;
33
33
34
+ import static com .iknow .android .features .trim .VideoTrimmerUtil .MAX_COUNT_RANGE ;
35
+ import static com .iknow .android .features .trim .VideoTrimmerUtil .MAX_SHOOT_DURATION ;
36
+ import static com .iknow .android .features .trim .VideoTrimmerUtil .RECYCLER_VIEW_PADDING ;
37
+ import static com .iknow .android .features .trim .VideoTrimmerUtil .THUMB_WIDTH ;
34
38
import static com .iknow .android .features .trim .VideoTrimmerUtil .VIDEO_FRAMES_WIDTH ;
35
39
36
40
/**
@@ -101,18 +105,15 @@ private void init(Context context) {
101
105
102
106
private void initRangeSeekBarView () {
103
107
if (mRangeSeekBarView != null ) return ;
104
- int rangeWidth ;
105
108
mLeftProgressPos = 0 ;
106
- if (mDuration <= VideoTrimmerUtil .MAX_SHOOT_DURATION ) {
107
- mThumbsTotalCount = VideoTrimmerUtil .MAX_COUNT_RANGE ;
108
- rangeWidth = mMaxWidth ;
109
+ if (mDuration <= MAX_SHOOT_DURATION ) {
110
+ mThumbsTotalCount = MAX_COUNT_RANGE ;
109
111
mRightProgressPos = mDuration ;
110
112
} else {
111
- mThumbsTotalCount = (int ) (mDuration * 1.0f / (VideoTrimmerUtil .MAX_SHOOT_DURATION * 1.0f ) * VideoTrimmerUtil .MAX_COUNT_RANGE );
112
- rangeWidth = mMaxWidth / VideoTrimmerUtil .MAX_COUNT_RANGE * mThumbsTotalCount ;
113
- mRightProgressPos = VideoTrimmerUtil .MAX_SHOOT_DURATION ;
113
+ mThumbsTotalCount = (int ) (mDuration * 1.0f / (MAX_SHOOT_DURATION * 1.0f ) * MAX_COUNT_RANGE );
114
+ mRightProgressPos = MAX_SHOOT_DURATION ;
114
115
}
115
- mVideoThumbRecyclerView .addItemDecoration (new SpacesItemDecoration2 (VideoTrimmerUtil . RECYCLER_VIEW_PADDING , mThumbsTotalCount ));
116
+ mVideoThumbRecyclerView .addItemDecoration (new SpacesItemDecoration2 (RECYCLER_VIEW_PADDING , mThumbsTotalCount ));
116
117
mRangeSeekBarView = new RangeSeekBarView (mContext , mLeftProgressPos , mRightProgressPos );
117
118
mRangeSeekBarView .setSelectedMinValue (mLeftProgressPos );
118
119
mRangeSeekBarView .setSelectedMaxValue (mRightProgressPos );
@@ -122,7 +123,7 @@ private void initRangeSeekBarView() {
122
123
mRangeSeekBarView .setOnRangeSeekBarChangeListener (mOnRangeSeekBarChangeListener );
123
124
mSeekBarLayout .addView (mRangeSeekBarView );
124
125
125
- mAverageMsPx = mDuration * 1.0f / rangeWidth * 1.0f ;
126
+ mAverageMsPx = ( mDuration - MAX_SHOOT_DURATION ) / ( float )( mThumbsTotalCount - MAX_COUNT_RANGE ) ;
126
127
averagePxMs = (mMaxWidth * 1.0f / (mRightProgressPos - mLeftProgressPos ));
127
128
}
128
129
@@ -308,12 +309,14 @@ private void setPlayPauseViewIcon(boolean isPlaying) {
308
309
};
309
310
310
311
private final RecyclerView .OnScrollListener mOnScrollListener = new RecyclerView .OnScrollListener () {
311
- @ Override public void onScrollStateChanged (RecyclerView recyclerView , int newState ) {
312
+ @ Override
313
+ public void onScrollStateChanged (RecyclerView recyclerView , int newState ) {
312
314
super .onScrollStateChanged (recyclerView , newState );
313
315
Log .d (TAG , "newState = " + newState );
314
316
}
315
317
316
- @ Override public void onScrolled (RecyclerView recyclerView , int dx , int dy ) {
318
+ @ Override
319
+ public void onScrolled (RecyclerView recyclerView , int dx , int dy ) {
317
320
super .onScrolled (recyclerView , dx , dy );
318
321
isSeeking = false ;
319
322
int scrollX = calcScrollXDistance ();
@@ -324,11 +327,11 @@ private void setPlayPauseViewIcon(boolean isPlaying) {
324
327
}
325
328
isOverScaledTouchSlop = true ;
326
329
//初始状态,why ? 因为默认的时候有35dp的空白!
327
- if (scrollX == -VideoTrimmerUtil . RECYCLER_VIEW_PADDING ) {
330
+ if (scrollX == -RECYCLER_VIEW_PADDING ) {
328
331
scrollPos = 0 ;
329
332
} else {
330
333
isSeeking = true ;
331
- scrollPos = (long ) (mAverageMsPx * (VideoTrimmerUtil . RECYCLER_VIEW_PADDING + scrollX ));
334
+ scrollPos = (long ) (mAverageMsPx * (RECYCLER_VIEW_PADDING + scrollX ) / THUMB_WIDTH );
332
335
mLeftProgressPos = mRangeSeekBarView .getSelectedMinValue () + scrollPos ;
333
336
mRightProgressPos = mRangeSeekBarView .getSelectedMaxValue () + scrollPos ;
334
337
Log .d (TAG , "onScrolled >>>> mLeftProgressPos = " + mLeftProgressPos );
@@ -368,8 +371,8 @@ private void playingAnimation() {
368
371
mRedProgressIcon .setVisibility (View .VISIBLE );
369
372
}
370
373
final FrameLayout .LayoutParams params = (FrameLayout .LayoutParams ) mRedProgressIcon .getLayoutParams ();
371
- int start = (int ) (VideoTrimmerUtil . RECYCLER_VIEW_PADDING + (mRedProgressBarPos - scrollPos ) * averagePxMs );
372
- int end = (int ) (VideoTrimmerUtil . RECYCLER_VIEW_PADDING + (mRightProgressPos - scrollPos ) * averagePxMs );
374
+ int start = (int ) (RECYCLER_VIEW_PADDING + (mRedProgressBarPos - scrollPos ) * averagePxMs );
375
+ int end = (int ) (RECYCLER_VIEW_PADDING + (mRightProgressPos - scrollPos ) * averagePxMs );
373
376
mRedProgressAnimator = ValueAnimator .ofInt (start , end ).setDuration ((mRightProgressPos - scrollPos ) - (mRedProgressBarPos - scrollPos ));
374
377
mRedProgressAnimator .setInterpolator (new LinearInterpolator ());
375
378
mRedProgressAnimator .addUpdateListener (new ValueAnimator .AnimatorUpdateListener () {
0 commit comments