package com.yunbao.phonelive.custom;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.database.DataSetObserver;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
import android.support.v4.os.ParcelableCompat;
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
import android.support.v4.view.AccessibilityDelegateCompat;
import android.support.v4.view.KeyEventCompat;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.VelocityTrackerCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewConfigurationCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.view.accessibility.AccessibilityEventCompat;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.support.v4.view.accessibility.AccessibilityRecordCompat;
import android.support.v4.widget.EdgeEffectCompat;
import android.util.AttributeSet;
import android.util.Log;
import android.view.FocusFinder;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SoundEffectConstants;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.Interpolator;
import android.widget.Scroller;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* 垂直ViewPager
*/
public class VerticalViewPager extends ViewGroup {
private static final String TAG = "ViewPager";
private static final boolean DEBUG = false;
private static final boolean USE_CACHE = false;
private static final int DEFAULT_OFFSCREEN_PAGES = 1;
private static final int MAX_SETTLE_DURATION = 600; // ms
private static final int MIN_DISTANCE_FOR_FLING = 25; // dips
private static final int DEFAULT_GUTTER_SIZE = 16; // dips
private static final int MIN_FLING_VELOCITY = 400; // dips
private static final int[] LAYOUT_ATTRS = new int[]{
android.R.attr.layout_gravity
};
/**
* Used to track what the expected number of items in the adapter should be.
* If the app changes this when we don't expect it, we'll throw a big obnoxious exception.
*/
private int mExpectedAdapterCount;
static class ItemInfo {
Object object;
int position;
boolean scrolling;
float heightFactor;
float offset;
}
private static final Comparator<ItemInfo> COMPARATOR = new Comparator<ItemInfo>() {
@Override
public int compare(ItemInfo lhs, ItemInfo rhs) {
return lhs.position - rhs.position;
}
};
private static final Interpolator sInterpolator = new Interpolator() {
public float getInterpolation(float t) {
t -= 1.0f;
return t * t * t * t * t + 1.0f;
}
};
private final ArrayList<ItemInfo> mItems = new ArrayList<ItemInfo>();
private final ItemInfo mTempItem = new ItemInfo();
private final Rect mTempRect = new Rect();
private PagerAdapter mAdapter;
private int mCurItem; // Index of currently displayed page.
private int mRestoredCurItem = -1;
private Parcelable mRestoredAdapterState = null;
private ClassLoader mRestoredClassLoader = null;
private Scroller mScroller;
private PagerObserver mObserver;
private int mPageMargin;
private Drawable mMarginDrawable;
private int mLeftPageBounds;
private int mRightPageBounds;
// Offsets of the first and last items, if known.
// Set during population, used to determine if we are at the beginning
// or end of the pager data set during touch scrolling.
private float mFirstOffset = -Float.MAX_VALUE;
private float mLastOffset = Float.MAX_VALUE;
private int mChildWidthMeasureSpec;
private int mChildHeightMeasureSpec;
private boolean mInLayout;
private boolean mScrollingCacheEnabled;
private boolean mPopulatePending;
private int mOffscreenPageLimit = DEFAULT_OFFSCREEN_PAGES;
private boolean mIsBeingDragged;
private boolean mIsUnableToDrag;
private boolean mIgnoreGutter;
private int mDefaultGutterSize;
private int mGutterSize;
private int mTouchSlop;
/**
* Position of the last motion event.
*/
private float mLastMotionX;
private float mLastMotionY;
private float mInitialMotionX;
private float mInitialMotionY;
/**
* ID of the active pointer. This is used to retain consistency during
* drags/flings if multiple pointers are used.
*/
private int mActivePointerId = INVALID_POINTER;
/**
* Sentinel value for no current active pointer.
* Used by {@link #mActivePointerId}.
*/
private static final int INVALID_POINTER = -1;
/**
* Determines speed during touch scrolling
*/
private VelocityTracker mVelocityTracker;
private int mMinimumVelocity;
private int mMaximumVelocity;
private int mFlingDistance;
private int mCloseEnough;
// If the pager is at least this close to its final position, complete the scroll
// on touch down and let the user interact with the content inside instead of
// "catching" the flinging pager.
private static final int CLOSE_ENOUGH = 2; // dp
private boolean mFakeDragging;
private long mFakeDragBeginTime;
private EdgeEffectCompat mTopEdge;
private EdgeEffectCompat mBottomEdge;
private boolean mFirstLayout = true;
private boolean mNeedCalculatePageOffsets = false;
private boolean mCalledSuper;
private int mDecorChildCount;
private ViewPager.OnPageChangeListener mOnPageChangeListener;
private ViewPager.OnPageChangeListener mInternalPageChangeListener;
private OnAdapterChangeListener mAdapterChangeListener;
private ViewPager.PageTransformer mPageTransformer;
private Method mSetChildrenDrawingOrderEnabled;
private static final int DRAW_ORDER_DEFAULT = 0;
private static final int DRAW_ORDER_FORWARD = 1;
private static final int DRAW_ORDER_REVERSE = 2;
private int mDrawingOrder;
private ArrayList<View> mDrawingOrderedChildren;
private static final ViewPositionComparator sPositionComparator = new ViewPositionComparator();
/**
* Indicates that the pager is in an idle, settled state. The current page
* is fully in view and no animation is in progress.
*/
public static final int SCROLL_STATE_IDLE = 0;
/**
* Indicates that the pager is currently being dragged by the user.
*/
public static final int SCROLL_STATE_DRAGGING = 1;
/**
* Indicates that the pager is in the process of settling to a final position.
*/
public static final int SCROLL_STATE_SETTLING = 2;
private final Runnable mEndScrollRunnable = new Runnable() {
public void run() {
setScrollState(SCROLL_STATE_IDLE);
populate();
}
};
private int mScrollState = SCROLL_STATE_IDLE;
/**
* Used internally to monitor when adapters are switched.
*/
interface OnAdapterChangeListener {
public void onAdapterChanged(PagerAdapter oldAdapter, PagerAdapter newAdapter);
}
/**
* Used internally to tag special types of child views that should be added as
* pager decorations by default.
*/
interface Decor {
}
public VerticalViewPager(Context context) {
super(context);
initViewPager();
}
public VerticalViewPager(Context context, Attri
没有合适的资源?快使用搜索试试~ 我知道了~
原生Java高仿短视频APP双端源码
共1127个文件
png:417个
xml:317个
java:258个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 42 浏览量
2022-03-19
11:26:58
上传
评论 2
收藏 63.2MB 7Z 举报
温馨提示
Java开发,上手有难度,小白童鞋请勿瞎捣鼓。 安卓语言是:android stdio 苹果语言是:OC 环境php5.6 sql5.5 伪静态设置thinkphp 适合用来学习
资源推荐
资源详情
资源评论
收起资源包目录
原生Java高仿短视频APP双端源码 (1127个子文件)
LiteAVSDK_UGC_4.4.3774.aar 12.88MB
ti-sdk.aar 55KB
gradlew.bat 2KB
fileSnapshots.bin 51.26MB
localClassSetAnalysis.bin 7.67MB
fileHashes.bin 4.18MB
localClassSetAnalysis.bin 1.95MB
taskArtifacts.bin 764KB
fileSnapshotsToTreeSnapshotsIndex.bin 206KB
localJarClasspathSnapshot.bin 102KB
localJarClasspathSnapshot.bin 63KB
localClassSetAnalysis.bin 42KB
localClassSetAnalysis.bin 42KB
localClassSetAnalysis.bin 29KB
localJarClasspathSnapshot.bin 28KB
localJarClasspathSnapshot.bin 24KB
localJarClasspathSnapshot.bin 21KB
icon_effect_8.gif 644KB
icon_effect_3.gif 515KB
icon_effect_6.gif 433KB
icon_effect_7.gif 272KB
icon_effect_2.gif 267KB
icon_effect_1.gif 267KB
icon_effect_4.gif 267KB
icon_effect_5.gif 267KB
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
build.gradle 4KB
build.gradle 1KB
build.gradle 781B
build.gradle 774B
build.gradle 594B
build.gradle 569B
settings.gradle 60B
gradlew 5KB
app.iml 18KB
sharedsdk.iml 12KB
jpush.iml 9KB
beauty.iml 9KB
video.iml 9KB
small-video-crack.iml 871B
mockable-android-25.jar 32.3MB
jmessage-sdk-android-2.6.1.jar 1.55MB
jcore-android-1.2.1.jar 296KB
TencentLocationSdk_v6.2.5.3.jar 286KB
AndroidPicker-1.5.6.jar 216KB
TencentMapSDK_1.2.8.1.jar 216KB
MobTools-2017.0412.1554.jar 195KB
jpush-android-3.1.3.jar 172KB
bdasr_3.0.7.3.jar 146KB
cos-sdk-android.1.4.3.11.jar 141KB
ShareSDK-Core-2.8.3.jar 116KB
commons-io-1.4.jar 106KB
libammsdk.jar 84KB
MobCommons-2017.0412.1554.jar 70KB
gradle-wrapper.jar 52KB
ShareSDK-Wechat-Core-2.8.3.jar 43KB
ShareSDK-QQ-2.8.3.jar 32KB
ShareSDK-Facebook-2.8.3.jar 31KB
ShareSDK-QZone-2.8.3.jar 30KB
ShareSDK-Twitter-2.8.3.jar 18KB
ShareSDK-Wechat-Moments-2.8.3.jar 6KB
ShareSDK-Wechat-2.8.3.jar 6KB
ShareSDK-Wechat-Favorite-2.8.3.jar 6KB
VerticalViewPager.java 106KB
ChatActivity.java 51KB
HttpUtil.java 33KB
UserFragment.java 28KB
ItemDecoration.java 26KB
SpecialHolder.java 20KB
JMessageUtil.java 19KB
RefreshLayout.java 19KB
LocationActivity.java 18KB
SearchActivity2.java 18KB
ChatAdapter.java 18KB
RefreshLayout2.java 16KB
MessageFragment.java 16KB
RangeSlider.java 16KB
NumberProgressBar.java 16KB
VideoPlayWrap.java 16KB
CommentReplyAdapter.java 15KB
VideoPlayFragment.java 14KB
OnekeyShareThemeImpl.java 14KB
VideoProgressController.java 12KB
ViewPagerIndicator.java 12KB
VideoCommentFragment.java 12KB
ReplyActivity.java 12KB
RefreshView.java 12KB
MainActivity.java 11KB
VideoPlayView.java 11KB
DialogUitl.java 11KB
VideoPlayActivity.java 11KB
CommentAdapter.java 11KB
MusicAdapter.java 10KB
HttpInterceptor.java 10KB
LoginActivity.java 10KB
BeautyHolder.java 10KB
共 1127 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
办公模板库素材蛙
- 粉丝: 1534
- 资源: 2286
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功