日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

RecyclerView ItemTouchHelper

發布時間:2025/4/16 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RecyclerView ItemTouchHelper 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:http://blog.csdn.net/tyk0910/article/details/51460808

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayout android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextView android:id="@+id/txt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:text="切換欄目"android:textSize="15dp"/><View android:layout_width="match_parent"android:layout_height="1dp"android:background="@color/black"/><ScrollView android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="none"><LinearLayout android:id="@+id/tbs_ll"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.v7.widget.RecyclerView android:id="@+id/chose_recycle"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:layout_marginTop="15dp"android:layout_weight="1"/><LinearLayout android:id="@+id/my_ll"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/chose_recycle"android:layout_centerVertical="true"android:background="@color/font_text"><TextView android:id="@+id/second_txt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:text="點擊添加更多欄目"android:textSize="15dp"/></LinearLayout><android.support.v7.widget.RecyclerView android:id="@+id/all_recycle"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/my_ll"android:layout_marginLeft="15dp"android:layout_marginTop="10dp"/></LinearLayout></ScrollView></LinearLayout> </LinearLayout> public interface onMoveAndSwipedListener {boolean onItemMove(int fromPosition , int toPosition);void onItemDismiss(int position); } public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {private onMoveAndSwipedListener mAdapter;public SimpleItemTouchHelperCallback(onMoveAndSwipedListener listener) {mAdapter = listener;}/*** 這個方法是用來設置我們拖動的方向以及側滑的方向的*/@Overridepublic int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {//如果是ListView樣式的RecyclerView//設置拖拽方向為上下final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN |ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;//設置側滑方向為從左到右和從右到左都可以final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;//將方向參數設置進去return makeMovementFlags(dragFlags, swipeFlags);}/*** 當我們拖動item時會回調此方法*/@Overridepublic boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {//如果兩個item不是一個類型的,我們讓他不可以拖拽if (viewHolder.getItemViewType() != target.getItemViewType()) {return false;}//回調adapter中的onItemMove方法mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());return true;}/*** 當我們側滑item時會回調此方法*/@Overridepublic void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {mAdapter.onItemDismiss(viewHolder.getAdapterPosition());}} public class WangYiActivity extends AppCompatActivity implements AllTabsAdapter.onAllTabsListener {public static List<String> choseTabs = new ArrayList<>();public static List<String> allTabs = new ArrayList<>();private RecyclerView choseRecycle, allRecycle;private ChoseTabsAdapter choseAdapter;private AllTabsAdapter allAdapter;private LinearLayout linearLayout;private ItemTouchHelper mItemTouchHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wang_yi);initviews();initdatas();}private void initdatas() {choseTabs.add("頭條");choseTabs.add("科技");choseTabs.add("熱點");choseTabs.add("政務");choseTabs.add("移動互聯");choseTabs.add("軍事");choseTabs.add("歷史");choseTabs.add("社會");choseTabs.add("財經");choseTabs.add("娛樂");allTabs.add("體育");allTabs.add("時尚");allTabs.add("房產");allTabs.add("論壇");allTabs.add("博客");allTabs.add("健康");allTabs.add("輕松一刻");allTabs.add("直播");allTabs.add("段子");allTabs.add("彩票");allTabs.add("直播");allTabs.add("段子");allTabs.add("彩票");allTabs.add("直播");allTabs.add("段子");allTabs.add("彩票");allTabs.add("輕松一刻");allTabs.add("直播");allTabs.add("段子");allTabs.add("彩票");allTabs.add("直播");allTabs.add("段子");allTabs.add("彩票");allTabs.add("直播");allTabs.add("段子");allTabs.add("彩票");}private void initviews() {choseTabs.clear();allTabs.clear();linearLayout = (LinearLayout) findViewById(R.id.tbs_ll);choseRecycle = (RecyclerView) findViewById(R.id.chose_recycle);allRecycle = (RecyclerView) findViewById(R.id.all_recycle);choseAdapter = new ChoseTabsAdapter(this);allAdapter = new AllTabsAdapter(this);allAdapter.setListener(this);choseRecycle.setLayoutManager(new GridLayoutManager(this, 4));allRecycle.setLayoutManager(new GridLayoutManager(this, 4));choseRecycle.addItemDecoration(new SpaceItemDecoration(15));allRecycle.addItemDecoration(new SpaceItemDecoration(15));choseRecycle.setAdapter(choseAdapter);allRecycle.setAdapter(allAdapter);//關聯ItemTouchHelper和RecyclerViewItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(choseAdapter);mItemTouchHelper = new ItemTouchHelper(callback);mItemTouchHelper.attachToRecyclerView(choseRecycle);}@TargetApi(Build.VERSION_CODES.JELLY_BEAN)@Overridepublic void allTabsItemClick(final View view, final int position) {final PathMeasure mPathMeasure;final float[] mCurrentPosition = new float[2];int parentLoc[] = new int[2];linearLayout.getLocationInWindow(parentLoc);int startLoc[] = new int[2];view.getLocationInWindow(startLoc);final View startView = view;startView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(view.getWidth(), view.getHeight());Log.e("tag", startView.getWidth() + "#" + startView.getHeight());allRecycle.removeView(view);linearLayout.addView(startView);// ImageView imageView = new ImageView(this);// imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));// imageView.setImageResource(R.drawable.location_located);// linearLayout.addView(imageView);final View endView;float toX, toY;int endLoc[] = new int[2];//進行判斷int i = choseTabs.size();if (i == 0) {toX = view.getWidth();toY = view.getHeight();} else if (i % 4 == 0) {endView = choseRecycle.getChildAt(i - 4);endView.getLocationInWindow(endLoc);toX = endLoc[0] - parentLoc[0];toY = endLoc[1] + view.getHeight() - parentLoc[1];} else {endView = choseRecycle.getChildAt(i - 1);endView.getLocationInWindow(endLoc);toX = endLoc[0] + view.getWidth() - parentLoc[0];toY = endLoc[1] - parentLoc[1];}float startX = startLoc[0] - parentLoc[0];float startY = startLoc[1] - parentLoc[1];Path path = new Path();path.moveTo(startX, startY);path.lineTo(toX, toY);mPathMeasure = new PathMeasure(path, false);//屬性動畫實現ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, mPathMeasure.getLength());valueAnimator.setDuration(500);// 勻速插值器valueAnimator.setInterpolator(new LinearInterpolator());valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float value = (Float) animation.getAnimatedValue();// 獲取當前點坐標封裝到mCurrentPositionmPathMeasure.getPosTan(value, mCurrentPosition, null);startView.setTranslationX(mCurrentPosition[0]);startView.setTranslationY(mCurrentPosition[1]);Log.e("tag", mCurrentPosition[0] + "@" + mCurrentPosition[1]);}});valueAnimator.start();valueAnimator.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {}@Overridepublic void onAnimationEnd(Animator animation) {//默認recyclerviewe的動畫allRecycle.setItemAnimator(new DefaultItemAnimator());choseRecycle.setItemAnimator(new DefaultItemAnimator());choseTabs.add(choseTabs.size(), allTabs.get(position));allTabs.remove(position);//先更新數據allAdapter.notifyDataSetChanged();choseAdapter.notifyDataSetChanged();//再更新動畫allAdapter.notifyItemRemoved(position);choseAdapter.notifyItemInserted(choseTabs.size());linearLayout.removeView(startView);}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});}}

原文鏈接:http://www.jianshu.com/p/d30fd8da4eac

使用ItemTouchHelper高效地實現 今日頭條 、網易新聞 的頻道排序、移動

/*** ItemDragHelperCallback* Created by YoKeyword on 15/12/29.*/ public class ItemDragHelperCallback extends ItemTouchHelper.Callback {@Overridepublic int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {int dragFlags;RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();if (manager instanceof GridLayoutManager || manager instanceof StaggeredGridLayoutManager) {dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;} else {dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;}// 如果想支持滑動(刪除)操作, swipeFlags = ItemTouchHelper.START | ItemTouchHelper.ENDint swipeFlags = 0;return makeMovementFlags(dragFlags, swipeFlags);}@Overridepublic boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {// 不同Type之間不可移動if (viewHolder.getItemViewType() != target.getItemViewType()) {return false;}if (recyclerView.getAdapter() instanceof OnItemMoveListener) {OnItemMoveListener listener = ((OnItemMoveListener) recyclerView.getAdapter());listener.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());}return true;}@Overridepublic void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {}@Overridepublic void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {// 不在閑置狀態if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {if (viewHolder instanceof OnDragVHListener) {OnDragVHListener itemViewHolder = (OnDragVHListener) viewHolder;itemViewHolder.onItemSelected();}}super.onSelectedChanged(viewHolder, actionState);}@Overridepublic void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {if (viewHolder instanceof OnDragVHListener) {OnDragVHListener itemViewHolder = (OnDragVHListener) viewHolder;itemViewHolder.onItemFinish();}super.clearView(recyclerView, viewHolder);}@Overridepublic boolean isLongPressDragEnabled() {// 不支持長按拖拽功能 手動控制return false;}@Overridepublic boolean isItemViewSwipeEnabled() {// 不支持滑動功能return false;} } /*** ViewHolder 被選中 以及 拖拽釋放 觸發監聽器* Created by YoKeyword on 15/12/29.*/ public interface OnDragVHListener {/*** Item被選中時觸發*/void onItemSelected();/*** Item在拖拽結束/滑動結束后觸發*/void onItemFinish(); } /*** Item移動后 觸發* Created by YoKeyword on 15/12/28.*/ public interface OnItemMoveListener {void onItemMove(int fromPosition, int toPosition); } /*** 頻道 增刪改查 排序* Created by YoKeyword on 15/12/29.*/ public class ChannelActivity extends AppCompatActivity {private RecyclerView mRecy;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_demo);mRecy = (RecyclerView) findViewById(R.id.recy);init();}private void init() {final List<ChannelEntity> items = new ArrayList<>();for (int i = 0; i < 18; i++) {ChannelEntity entity = new ChannelEntity();entity.setName("頻道" + i);items.add(entity);}final List<ChannelEntity> otherItems = new ArrayList<>();for (int i = 0; i < 20; i++) {ChannelEntity entity = new ChannelEntity();entity.setName("其他" + i);otherItems.add(entity);}GridLayoutManager manager = new GridLayoutManager(this, 4);mRecy.setLayoutManager(manager);ItemDragHelperCallback callback = new ItemDragHelperCallback();final ItemTouchHelper helper = new ItemTouchHelper(callback);helper.attachToRecyclerView(mRecy);final ChannelAdapter adapter = new ChannelAdapter(this, helper, items, otherItems);manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {@Overridepublic int getSpanSize(int position) {int viewType = adapter.getItemViewType(position);return viewType == ChannelAdapter.TYPE_MY || viewType == ChannelAdapter.TYPE_OTHER ? 1 : 4;}});mRecy.setAdapter(adapter);adapter.setOnMyChannelItemClickListener(new ChannelAdapter.OnMyChannelItemClickListener() {@Overridepublic void onItemClick(View v, int position) {Toast.makeText(ChannelActivity.this, items.get(position).getName(), Toast.LENGTH_SHORT).show();}});} } /*** 拖拽排序 + 增刪* Created by YoKeyword on 15/12/28.*/ public class ChannelAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnItemMoveListener {// 我的頻道 標題部分public static final int TYPE_MY_CHANNEL_HEADER = 0;// 我的頻道public static final int TYPE_MY = 1;// 其他頻道 標題部分public static final int TYPE_OTHER_CHANNEL_HEADER = 2;// 其他頻道public static final int TYPE_OTHER = 3;// 我的頻道之前的header數量 該demo中 即標題部分 為 1private static final int COUNT_PRE_MY_HEADER = 1;// 其他頻道之前的header數量 該demo中 即標題部分 為 COUNT_PRE_MY_HEADER + 1private static final int COUNT_PRE_OTHER_HEADER = COUNT_PRE_MY_HEADER + 1;private static final long ANIM_TIME = 360L;// touch 點擊開始時間private long startTime;// touch 間隔時間 用于分辨是否是 "點擊"private static final long SPACE_TIME = 100;private LayoutInflater mInflater;private ItemTouchHelper mItemTouchHelper;// 是否為 編輯 模式private boolean isEditMode;private List<ChannelEntity> mMyChannelItems, mOtherChannelItems;// 我的頻道點擊事件private OnMyChannelItemClickListener mChannelItemClickListener;public ChannelAdapter(Context context, ItemTouchHelper helper, List<ChannelEntity> mMyChannelItems, List<ChannelEntity> mOtherChannelItems) {this.mInflater = LayoutInflater.from(context);this.mItemTouchHelper = helper;this.mMyChannelItems = mMyChannelItems;this.mOtherChannelItems = mOtherChannelItems;}@Overridepublic int getItemViewType(int position) {if (position == 0) { // 我的頻道 標題部分return TYPE_MY_CHANNEL_HEADER;} else if (position == mMyChannelItems.size() + 1) { // 其他頻道 標題部分return TYPE_OTHER_CHANNEL_HEADER;} else if (position > 0 && position < mMyChannelItems.size() + 1) {return TYPE_MY;} else {return TYPE_OTHER;}}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {final View view;switch (viewType) {case TYPE_MY_CHANNEL_HEADER:view = mInflater.inflate(R.layout.item_my_channel_header, parent, false);final MyChannelHeaderViewHolder holder = new MyChannelHeaderViewHolder(view);holder.tvBtnEdit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (!isEditMode) {startEditMode((RecyclerView) parent);holder.tvBtnEdit.setText(R.string.finish);} else {cancelEditMode((RecyclerView) parent);holder.tvBtnEdit.setText(R.string.edit);}}});return holder;case TYPE_MY:view = mInflater.inflate(R.layout.item_my, parent, false);final MyViewHolder myHolder = new MyViewHolder(view);myHolder.textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(final View v) {int position = myHolder.getAdapterPosition();if (isEditMode) {RecyclerView recyclerView = ((RecyclerView) parent);View targetView = recyclerView.getLayoutManager().findViewByPosition(mMyChannelItems.size() + COUNT_PRE_OTHER_HEADER);View currentView = recyclerView.getLayoutManager().findViewByPosition(position);// 如果targetView不在屏幕內,則indexOfChild為-1 此時不需要添加動畫,因為此時notifyItemMoved自帶一個向目標移動的動畫// 如果在屏幕內,則添加一個位移動畫if (recyclerView.indexOfChild(targetView) >= 0) {int targetX, targetY;RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();int spanCount = ((GridLayoutManager) manager).getSpanCount();// 移動后 高度將變化 (我的頻道Grid 最后一個item在新的一行第一個)if ((mMyChannelItems.size() - COUNT_PRE_MY_HEADER) % spanCount == 0) {View preTargetView = recyclerView.getLayoutManager().findViewByPosition(mMyChannelItems.size() + COUNT_PRE_OTHER_HEADER - 1);targetX = preTargetView.getLeft();targetY = preTargetView.getTop();} else {targetX = targetView.getLeft();targetY = targetView.getTop();}moveMyToOther(myHolder);startAnimation(recyclerView, currentView, targetX, targetY);} else {moveMyToOther(myHolder);}} else {mChannelItemClickListener.onItemClick(v, position - COUNT_PRE_MY_HEADER);}}});myHolder.textView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(final View v) {if (!isEditMode) {RecyclerView recyclerView = ((RecyclerView) parent);startEditMode(recyclerView);// header 按鈕文字 改成 "完成"View view = recyclerView.getChildAt(0);if (view == recyclerView.getLayoutManager().findViewByPosition(0)) {TextView tvBtnEdit = (TextView) view.findViewById(R.id.tv_btn_edit);tvBtnEdit.setText(R.string.finish);}}mItemTouchHelper.startDrag(myHolder);return true;}});myHolder.textView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if (isEditMode) {switch (MotionEventCompat.getActionMasked(event)) {case MotionEvent.ACTION_DOWN:startTime = System.currentTimeMillis();break;case MotionEvent.ACTION_MOVE:if (System.currentTimeMillis() - startTime > SPACE_TIME) {mItemTouchHelper.startDrag(myHolder);}break;case MotionEvent.ACTION_CANCEL:case MotionEvent.ACTION_UP:startTime = 0;break;}}return false;}});return myHolder;case TYPE_OTHER_CHANNEL_HEADER:view = mInflater.inflate(R.layout.item_other_channel_header, parent, false);return new RecyclerView.ViewHolder(view) {};case TYPE_OTHER:view = mInflater.inflate(R.layout.item_other, parent, false);final OtherViewHolder otherHolder = new OtherViewHolder(view);otherHolder.textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {RecyclerView recyclerView = ((RecyclerView) parent);RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();int currentPiosition = otherHolder.getAdapterPosition();// 如果RecyclerView滑動到底部,移動的目標位置的y軸 - heightView currentView = manager.findViewByPosition(currentPiosition);// 目標位置的前一個item 即當前MyChannel的最后一個View preTargetView = manager.findViewByPosition(mMyChannelItems.size() - 1 + COUNT_PRE_MY_HEADER);// 如果targetView不在屏幕內,則為-1 此時不需要添加動畫,因為此時notifyItemMoved自帶一個向目標移動的動畫// 如果在屏幕內,則添加一個位移動畫if (recyclerView.indexOfChild(preTargetView) >= 0) {int targetX = preTargetView.getLeft();int targetY = preTargetView.getTop();int targetPosition = mMyChannelItems.size() - 1 + COUNT_PRE_OTHER_HEADER;GridLayoutManager gridLayoutManager = ((GridLayoutManager) manager);int spanCount = gridLayoutManager.getSpanCount();// target 在最后一行第一個if ((targetPosition - COUNT_PRE_MY_HEADER) % spanCount == 0) {View targetView = manager.findViewByPosition(targetPosition);targetX = targetView.getLeft();targetY = targetView.getTop();} else {targetX += preTargetView.getWidth();// 最后一個item可見if (gridLayoutManager.findLastVisibleItemPosition() == getItemCount() - 1) {// 最后的item在最后一行第一個位置if ((getItemCount() - 1 - mMyChannelItems.size() - COUNT_PRE_OTHER_HEADER) % spanCount == 0) {// RecyclerView實際高度 > 屏幕高度 && RecyclerView實際高度 < 屏幕高度 + item.heightint firstVisiblePostion = gridLayoutManager.findFirstVisibleItemPosition();if (firstVisiblePostion == 0) {// FirstCompletelyVisibleItemPosition == 0 即 內容不滿一屏幕 , targetY值不需要變化// // FirstCompletelyVisibleItemPosition != 0 即 內容滿一屏幕 并且 可滑動 , targetY值 + firstItem.getTopif (gridLayoutManager.findFirstCompletelyVisibleItemPosition() != 0) {int offset = (-recyclerView.getChildAt(0).getTop()) - recyclerView.getPaddingTop();targetY += offset;}} else { // 在這種情況下 并且 RecyclerView高度變化時(即可見第一個item的 position != 0),// 移動后, targetY值 + 一個item的高度targetY += preTargetView.getHeight();}}} else {System.out.println("current--No");}}// 如果當前位置是otherChannel可見的最后一個// 并且 當前位置不在grid的第一個位置// 并且 目標位置不在grid的第一個位置// 則 需要延遲250秒 notifyItemMove , 這是因為這種情況 , 并不觸發ItemAnimator , 會直接刷新界面// 導致我們的位移動畫剛開始,就已經notify完畢,引起不同步問題if (currentPiosition == gridLayoutManager.findLastVisibleItemPosition()&& (currentPiosition - mMyChannelItems.size() - COUNT_PRE_OTHER_HEADER) % spanCount != 0&& (targetPosition - COUNT_PRE_MY_HEADER) % spanCount != 0) {moveOtherToMyWithDelay(otherHolder);} else {moveOtherToMy(otherHolder);}startAnimation(recyclerView, currentView, targetX, targetY);} else {moveOtherToMy(otherHolder);}}});return otherHolder;}return null;}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {if (holder instanceof MyViewHolder) {MyViewHolder myHolder = (MyViewHolder) holder;myHolder.textView.setText(mMyChannelItems.get(position - COUNT_PRE_MY_HEADER).getName());if (isEditMode) {myHolder.imgEdit.setVisibility(View.VISIBLE);} else {myHolder.imgEdit.setVisibility(View.INVISIBLE);}} else if (holder instanceof OtherViewHolder) {((OtherViewHolder) holder).textView.setText(mOtherChannelItems.get(position - mMyChannelItems.size() - COUNT_PRE_OTHER_HEADER).getName());} else if (holder instanceof MyChannelHeaderViewHolder) {MyChannelHeaderViewHolder headerHolder = (MyChannelHeaderViewHolder) holder;if (isEditMode) {headerHolder.tvBtnEdit.setText(R.string.finish);} else {headerHolder.tvBtnEdit.setText(R.string.edit);}}}@Overridepublic int getItemCount() {// 我的頻道 標題 + 我的頻道.size + 其他頻道 標題 + 其他頻道.sizereturn mMyChannelItems.size() + mOtherChannelItems.size() + COUNT_PRE_OTHER_HEADER;}/*** 開始增刪動畫*/private void startAnimation(RecyclerView recyclerView, final View currentView, float targetX, float targetY) {final ViewGroup viewGroup = (ViewGroup) recyclerView.getParent();final ImageView mirrorView = addMirrorView(viewGroup, recyclerView, currentView);Animation animation = getTranslateAnimator(targetX - currentView.getLeft(), targetY - currentView.getTop());currentView.setVisibility(View.INVISIBLE);mirrorView.startAnimation(animation);animation.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {viewGroup.removeView(mirrorView);if (currentView.getVisibility() == View.INVISIBLE) {currentView.setVisibility(View.VISIBLE);}}@Overridepublic void onAnimationRepeat(Animation animation) {}});}/*** 我的頻道 移動到 其他頻道** @param myHolder*/private void moveMyToOther(MyViewHolder myHolder) {int position = myHolder.getAdapterPosition();int startPosition = position - COUNT_PRE_MY_HEADER;if (startPosition > mMyChannelItems.size() - 1) {return;}ChannelEntity item = mMyChannelItems.get(startPosition);mMyChannelItems.remove(startPosition);mOtherChannelItems.add(0, item);notifyItemMoved(position, mMyChannelItems.size() + COUNT_PRE_OTHER_HEADER);}/*** 其他頻道 移動到 我的頻道** @param otherHolder*/private void moveOtherToMy(OtherViewHolder otherHolder) {int position = processItemRemoveAdd(otherHolder);if (position == -1) {return;}notifyItemMoved(position, mMyChannelItems.size() - 1 + COUNT_PRE_MY_HEADER);}/*** 其他頻道 移動到 我的頻道 伴隨延遲** @param otherHolder*/private void moveOtherToMyWithDelay(OtherViewHolder otherHolder) {final int position = processItemRemoveAdd(otherHolder);if (position == -1) {return;}delayHandler.postDelayed(new Runnable() {@Overridepublic void run() {notifyItemMoved(position, mMyChannelItems.size() - 1 + COUNT_PRE_MY_HEADER);}}, ANIM_TIME);}private Handler delayHandler = new Handler();private int processItemRemoveAdd(OtherViewHolder otherHolder) {int position = otherHolder.getAdapterPosition();int startPosition = position - mMyChannelItems.size() - COUNT_PRE_OTHER_HEADER;if (startPosition > mOtherChannelItems.size() - 1) {return -1;}ChannelEntity item = mOtherChannelItems.get(startPosition);mOtherChannelItems.remove(startPosition);mMyChannelItems.add(item);return position;}/*** 添加需要移動的 鏡像View*/private ImageView addMirrorView(ViewGroup parent, RecyclerView recyclerView, View view) {/*** 我們要獲取cache首先要通過setDrawingCacheEnable方法開啟cache,然后再調用getDrawingCache方法就可以獲得view的cache圖片了。buildDrawingCache方法可以不用調用,因為調用getDrawingCache方法時,若果cache沒有建立,系統會自動調用buildDrawingCache方法生成cache。若想更新cache, 必須要調用destoryDrawingCache方法把舊的cache銷毀,才能建立新的。當調用setDrawingCacheEnabled方法設置為false, 系統也會自動把原來的cache銷毀。*/view.destroyDrawingCache();view.setDrawingCacheEnabled(true);final ImageView mirrorView = new ImageView(recyclerView.getContext());Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());mirrorView.setImageBitmap(bitmap);view.setDrawingCacheEnabled(false);int[] locations = new int[2];view.getLocationOnScreen(locations);int[] parenLocations = new int[2];recyclerView.getLocationOnScreen(parenLocations);FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(bitmap.getWidth(), bitmap.getHeight());params.setMargins(locations[0], locations[1] - parenLocations[1], 0, 0);parent.addView(mirrorView, params);return mirrorView;}@Overridepublic void onItemMove(int fromPosition, int toPosition) {ChannelEntity item = mMyChannelItems.get(fromPosition - COUNT_PRE_MY_HEADER);mMyChannelItems.remove(fromPosition - COUNT_PRE_MY_HEADER);mMyChannelItems.add(toPosition - COUNT_PRE_MY_HEADER, item);notifyItemMoved(fromPosition, toPosition);}/*** 開啟編輯模式** @param parent*/private void startEditMode(RecyclerView parent) {isEditMode = true;int visibleChildCount = parent.getChildCount();for (int i = 0; i < visibleChildCount; i++) {View view = parent.getChildAt(i);ImageView imgEdit = (ImageView) view.findViewById(R.id.img_edit);if (imgEdit != null) {imgEdit.setVisibility(View.VISIBLE);}}}/*** 完成編輯模式** @param parent*/private void cancelEditMode(RecyclerView parent) {isEditMode = false;int visibleChildCount = parent.getChildCount();for (int i = 0; i < visibleChildCount; i++) {View view = parent.getChildAt(i);ImageView imgEdit = (ImageView) view.findViewById(R.id.img_edit);if (imgEdit != null) {imgEdit.setVisibility(View.INVISIBLE);}}}/*** 獲取位移動畫*/private TranslateAnimation getTranslateAnimator(float targetX, float targetY) {TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f,Animation.ABSOLUTE, targetX,Animation.RELATIVE_TO_SELF, 0f,Animation.ABSOLUTE, targetY);// RecyclerView默認移動動畫250ms 這里設置360ms 是為了防止在位移動畫結束后 remove(view)過早 導致閃爍translateAnimation.setDuration(ANIM_TIME);translateAnimation.setFillAfter(true);return translateAnimation;}interface OnMyChannelItemClickListener {void onItemClick(View v, int position);}public void setOnMyChannelItemClickListener(OnMyChannelItemClickListener listener) {this.mChannelItemClickListener = listener;}/*** 我的頻道*/class MyViewHolder extends RecyclerView.ViewHolder implements OnDragVHListener {private TextView textView;private ImageView imgEdit;public MyViewHolder(View itemView) {super(itemView);textView = (TextView) itemView.findViewById(R.id.tv);imgEdit = (ImageView) itemView.findViewById(R.id.img_edit);}/*** item 被選中時*/@Overridepublic void onItemSelected() {textView.setBackgroundResource(R.drawable.bg_channel_p);}/*** item 取消選中時*/@Overridepublic void onItemFinish() {textView.setBackgroundResource(R.drawable.bg_channel);}}/*** 其他頻道*/class OtherViewHolder extends RecyclerView.ViewHolder {private TextView textView;public OtherViewHolder(View itemView) {super(itemView);textView = (TextView) itemView.findViewById(R.id.tv);}}/*** 我的頻道 標題部分*/class MyChannelHeaderViewHolder extends RecyclerView.ViewHolder {private TextView tvBtnEdit;public MyChannelHeaderViewHolder(View itemView) {super(itemView);tvBtnEdit = (TextView) itemView.findViewById(R.id.tv_btn_edit);}} } /*** 頻道實體類* Created by YoKeyword on 15/12/29.*/ public class ChannelEntity {private long id;private String name;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;} }

item_my_channel_header.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="48dp"><TextView android:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="16dp"android:text="@string/my_cahnnel"android:textSize="16sp"/><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@id/tv"android:layout_marginLeft="16dp"android:layout_toRightOf="@id/tv"android:text="@string/tip_drag"android:textColor="@color/tip"android:textSize="12sp"/><TextView android:id="@+id/tv_btn_edit"android:layout_width="56dp"android:layout_height="30dp"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:layout_marginRight="8dp"android:gravity="center"android:textSize="13sp"android:background="@drawable/bg_btn"android:textColor="@color/red_500"android:text="@string/edit"/><View android:layout_width="match_parent"android:layout_height="0.3dp"android:layout_alignParentBottom="true"android:background="@color/tip"/> </RelativeLayout>

item_other_channel_header.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="48dp"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/other_channel"android:layout_centerVertical="true"android:layout_marginLeft="16dp"android:textSize="16sp"/><View android:layout_width="match_parent"android:layout_height="0.3dp"android:layout_alignParentBottom="true"android:background="@color/tip"/> </RelativeLayout>

item_my.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextView android:id="@+id/tv"android:layout_width="match_parent"android:layout_height="36dp"android:layout_margin="8dp"android:background="@drawable/bg_channel"android:foreground="?attr/selectableItemBackground"android:layout_centerInParent="true"android:gravity="center"/><ImageView android:id="@+id/img_edit"android:layout_alignParentRight="true"android:layout_width="16dp"android:layout_height="16dp"android:src="@mipmap/ic_channel_edit"/></RelativeLayout>

item_other.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextView android:id="@+id/tv"android:layout_width="match_parent"android:layout_height="36dp"android:layout_margin="8dp"android:background="@drawable/bg_channel"android:foreground="?attr/selectableItemBackground"android:layout_centerInParent="true"android:gravity="center"/><ImageView android:id="@+id/img_edit"android:layout_alignParentRight="true"android:layout_width="16dp"android:visibility="invisible"android:layout_height="16dp"/></RelativeLayout>

activity_demo.xml

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerView android:id="@+id/recy"android:padding="8dp"android:clipChildren="false"android:clipToPadding="false"android:layout_width="match_parent"android:layout_height="match_parent"/> </FrameLayout>

新聞閱讀器頻道管理

總結

以上是生活随笔為你收集整理的RecyclerView ItemTouchHelper的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久av免费电影 | 欧美激情视频一区二区三区 | 久久av福利 | 日本在线观看中文字幕无线观看 | 国产成人av网站 | 999在线视频| 91av在线免费播放 | 色综合色综合色综合 | 久久综合九色综合97婷婷女人 | 国产精品久久久久久久久搜平片 | 国产精品视频免费 | 不卡视频国产 | 亚洲国产综合在线 | 最新色站 | 69精品在线观看 | 亚洲综合激情网 | 综合久久久久久久 | 久久黄色网页 | 色五丁香 | 免费观看国产精品视频 | www.精选视频.com | 亚洲精品免费在线播放 | 色综合久久五月天 | 黄色的网站在线 | 日韩精品在线观看视频 | 国产丝袜高跟 | 色婷婷久久久综合中文字幕 | 婷婷色 亚洲 | 亚洲午夜精 | 欧美在线aaa | 久久伦理影院 | 99久热在线精品视频观看 | 久久精品久久精品久久39 | 最近中文字幕国语免费av | 欧美在线一二 | 天天操天 | 日韩精品首页 | 91激情小视频 | 日韩av在线小说 | 麻豆传媒电影在线观看 | 免费看片日韩 | 91电影福利 | 97在线视频网站 | 在线视频精品播放 | 欧美日韩一二三四区 | 亚洲精品午夜一区人人爽 | 日韩特级黄色片 | 天天干一干 | 国产精品99免费看 | 国产精品久久久久久久久久东京 | 久久免费观看少妇a级毛片 久久久久成人免费 | 中文在线中文a | 欧美精品久久人人躁人人爽 | 人人干网 | 91av社区 | 91在线中字| 久久精品视 | 亚洲欧美日韩国产一区二区三区 | 天天色综合1| 最新av免费 | 深夜免费福利在线 | 日韩一区视频在线 | 91在线91 | 51精品国自产在线 | 最新中文字幕在线观看视频 | 久久激情电影 | 日韩精品中文字幕在线不卡尤物 | 在线直播av | 中文理论片| 五月开心激情 | 99re6热在线精品视频 | 色吊丝在线永久观看最新版本 | 久久99精品久久久久婷婷 | 草久久久| 五月婷婷久 | 天天射综合网站 | 香蕉久久久久 | 日韩精品一区二区三区不卡 | 在线国产不卡 | 亚洲精品福利在线观看 | 国产精品 欧美 日韩 | 欧美日韩国产区 | 日韩手机视频 | 国产二区视频在线 | 丁香婷婷激情国产高清秒播 | 91av影视| 97色国产 | 中文字幕一区在线观看视频 | 青青河边草观看完整版高清 | 久久玖 | 婷婷色av| 九色在线| 91麻豆精品国产自产 | 精品视频99| 91在线www | 精品久久久久久久久中文字幕 | 国产在线免费观看 | 久久香蕉国产精品麻豆粉嫩av | 国产不卡精品视频 | 欧美日韩一级在线 | 少妇性xxx| 狠狠色噜噜狠狠狠 | 亚洲国产中文字幕在线 | 在线不卡中文字幕播放 | 99精品国产在热久久下载 | 人成午夜视频 | 成人精品国产免费网站 | 欧美精品网站 | 欧美做受高潮电影o | 日韩视频中文字幕 | 中国一级特黄毛片大片久久 | 精品久久久久久久久久久久久久久久久久 | 免费观看十分钟 | 日韩电影中文 | 狂野欧美激情性xxxx | 美女黄频网站 | 最新日韩电影 | 亚洲乱码国产乱码精品天美传媒 | 国产在线高清 | 91免费日韩 | 日日夜精品 | 日韩欧美视频在线观看免费 | 99精品免费网| 天天爽天天爽 | 国产福利在线免费观看 | 免费在线中文字幕 | 中文字幕av全部资源www中文字幕在线观看 | 免费人成在线观看网站 | 国产亚洲精品女人久久久久久 | 日av免费 | 久久国产精品一区二区三区四区 | 国产精品精品 | 中国精品少妇 | 天天操夜夜操国产精品 | 国产玖玖精品视频 | 91污在线观看 | 免费观看一区二区 | 天天做天天爱夜夜爽 | 国产精品入口麻豆www | 缴情综合网五月天 | av网在线观看 | 久久综合九色综合欧美狠狠 | 在线成人一区二区 | 激情网婷婷 | 国产无遮挡又黄又爽在线观看 | 国产一级在线 | 久久99深爱久久99精品 | 国产区在线 | 成年人在线观看免费视频 | 在线免费国产 | 国产高清免费视频 | 毛片网免费 | 久香蕉| 精品一区二区免费 | 精品久久一区二区 | 国产精品电影在线 | 欧美一区中文字幕 | 亚洲福利精品 | 国产91精品看黄网站 | 97精品一区二区三区 | 激情喷水| 在线亚洲天堂网 | 91精品在线观看入口 | 涩涩网站在线 | 激情综合六月 | 久久福利剧场 | 激情网站五月天 | 在线观看视频在线观看 | 久久国产精品免费观看 | 天天色天天艹 | a黄色片在线观看 | 亚洲视频一区二区三区在线观看 | 成人性生交大片免费看中文网站 | 在线观看黄色大片 | 国产精品视频你懂的 | 日韩免费高清在线观看 | 天天操夜夜想 | 久久久久久国产精品久久 | 日韩中文字幕国产精品 | 久草在线观 | 免费看国产精品 | 日韩av电影中文字幕在线观看 | 久久精品一区八戒影视 | 欧美99久久 | 亚洲成av人片在线观看 | 久草观看视频 | 波多野结衣视频一区二区 | 天天干天天爽 | 国产婷婷精品av在线 | 中文字幕专区高清在线观看 | 久久视频在线免费观看 | 精品福利视频在线观看 | 国内精品久久久久久久影视麻豆 | 久久久性 | 看v片 | 69视频网站 | 一区二区中文字幕在线 | 99久久精品国产毛片 | 黄色三级网站在线观看 | 国产精品原创av片国产免费 | 欧美精品在线一区二区 | 国产在线观看你懂得 | av蜜桃在线| 日韩成人精品一区二区三区 | 欧美精彩视频在线观看 | 免费h精品视频在线播放 | 久久久在线视频 | 日韩mv欧美mv国产精品 | 黄色影院在线免费观看 | 超碰人人草人人 | 一区二区视频免费在线观看 | 久久电影日韩 | 成年人国产视频 | 成人资源在线 | 久久怡红院 | 久久久久北条麻妃免费看 | 国产精品毛片久久 | 91在线网站 | 成人av影视 | 成人国产精品av | 一区二区不卡高清 | 超碰在线资源 | 国产麻豆精品久久一二三 | av在线免费网站 | 伊人资源视频在线 | 国产色婷婷 | 婷婷精品国产一区二区三区日韩 | 久久久噜噜噜久久久 | 国产精品久久久久久久久大全 | 日韩影视在线观看 | 五月天婷婷在线观看视频 | 中文在线中文资源 | 亚洲国产精品一区二区久久,亚洲午夜 | 免费黄色在线网站 | 91污视频在线观看 | 久久国产成人午夜av影院宅 | 欧美日韩国产一区二区在线观看 | 国产在线视频一区 | 久久久久女人精品毛片九一 | 狠狠操狠狠操 | 一区二区视频免费在线观看 | 97成人精品视频在线观看 | 久久官网 | 欧美日韩一区二区三区免费视频 | 人人看人人爱 | 久久精品视频免费播放 | 激情久久一区二区三区 | 激情视频在线高清看 | www178ccom视频在线 | 在线免费精品视频 | 日韩在线观看的 | 黄色大全视频 | 国产精品一区二区三区在线免费观看 | 在线a视频免费观看 | 最近2019年日本中文免费字幕 | 亚洲日本国产精品 | 国产精品嫩草影院99网站 | 私人av| 中字幕视频在线永久在线观看免费 | 伊人宗合网 | 午夜 在线| 久久免费国产精品 | 在线免费观看涩涩 | 国产小视频免费观看 | 人人揉人人揉人人揉人人揉97 | 91免费网站在线观看 | 欧美黑人猛交 | 一本色道久久综合亚洲二区三区 | 日本资源中文字幕在线 | 国产精华国产精品 | 国产免费视频在线 | 中中文字幕av在线 | 日本精品视频网站 | 日韩a级黄色 | 国产成人一区二区三区免费看 | 免费看的黄网站 | 色噜噜在线观看视频 | 一级一片免费视频 | av中文字幕在线观看网站 | 免费观看成人av | 国产精品女人网站 | 91黄色在线视频 | 五月天高清欧美mv | 久久一区二区三区国产精品 | 国语自产偷拍精品视频偷 | 国产91在线看 | 99久久精品免费看 | 日韩精品网址 | 一区二区三区四区免费视频 | 国产精品免费成人 | 91日韩在线专区 | 欧美色图亚洲图片 | 五月婷婷香蕉 | 国产精品久久久久久久久久 | 亚洲1区 在线 | 97超碰色偷偷 | 色一色在线 | 免费亚洲视频 | 日韩1级片 | 热久精品 | 欧美成年网站 | 精品欧美小视频在线观看 | 在线亚洲日本 | 亚洲精品女人 | 韩日精品在线观看 | 在线国产专区 | 超碰在线97观看 | 在线成人性视频 | 国内精品久久久久国产 | 久久久久久国产精品久久 | 国产麻豆精品免费视频 | 亚洲精品乱码久久久久v最新版 | 黄色小说免费观看 | 国内精品久久久久影院优 | 午夜久久福利 | 国产99黄| 国精产品999国精产品视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久久精品网站 | 天天天天天天天天操 | 五月天六月色 | 久久久久免费精品国产小说色大师 | 亚洲一级电影视频 | 亚州国产精品久久久 | 激情综合国产 | 国产精品视频app | 天天激情天天干 | 91视频下载 | 免费黄色av | av免费网站 | 亚洲精品xxx | 天天在线视频色 | 亚洲 欧美 变态 国产 另类 | 国产精品永久在线 | 国产精品久久久久久一区二区 | 国产精品免费观看国产网曝瓜 | 黄色网www| 最新日韩在线 | 国产手机精品视频 | 日韩一级网站 | 久久国产精品视频观看 | 操高跟美女 | 中国一级片在线播放 | 久久综合久久综合这里只有精品 | 射综合网 | 2019国产精品 | 久久久999精品视频 国产美女免费观看 | 中文成人字幕 | 狠狠狠狠狠狠干 | 日免费视频 | 最新中文在线视频 | 国产高清黄色 | 久久久久久久亚洲精品 | 337p日本大胆噜噜噜噜 | 毛片网在线 | 天堂av在线网 | 午夜精品久久久久久久爽 | 中国一级片免费看 | 国产专区精品视频 | 操久久免费视频 | 黄色免费大片 | 精品欧美在线视频 | 成人av一区二区三区 | 国产精品国产自产拍高清av | 草在线 | 偷拍福利视频一区二区三区 | 91免费视频网站在线观看 | www178ccom视频在线 | 美女国产在线 | 天天爱天天色 | 久久久久久国产精品久久 | 国产成人61精品免费看片 | 在线观看视频在线观看 | 国产精品青草综合久久久久99 | 国产精品理论片 | 午夜视频亚洲 | 9在线观看免费高清完整版 玖玖爱免费视频 | 久草国产视频 | 亚洲精品国偷自产在线99热 | 精品亚洲一区二区三区 | 久久综合激情 | 久草网视频 | 国产1区在线 | 欧美福利在线播放 | 久久精品96 | 国产亚洲精品久久 | 久久夜夜爽| 人人爽人人澡人人添人人人人 | 亚洲九九九在线观看 | 午夜18视频在线观看 | 精品久久久久久久久久岛国gif | 91精品欧美| 91成人看片 | 免费人成在线观看 | 精品久久1| 国产成人精品综合 | 欧美a级成人淫片免费看 | 悠悠av资源片 | 天堂网av 在线 | 中文视频在线 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 黄色成人在线观看 | 黄色亚洲片| 91丨九色丨国产丨porny精品 | 国偷自产视频一区二区久 | 免费观看国产视频 | 81国产精品久久久久久久久久 | 中文一区在线 | 99亚洲视频 | 亚洲最新视频在线播放 | 四虎www. | 国产精品资源在线观看 | 日p在线观看 | 久久国语露脸国产精品电影 | 久久精品久久综合 | 在线日韩av| 天天翘av| 日韩色在线观看 | 国产裸体视频bbbbb | 99视频在线免费播放 | 亚洲综合射 | 五月情婷婷 | 手机在线观看国产精品 | 中文字幕在线免费看线人 | 日本成人黄色片 | 久久a久久 | 久久高清av| 国产精品乱码一区二区视频 | 午夜视频一区二区 | 久久a免费视频 | 精品一区二区免费在线观看 | 日韩专区在线播放 | 亚洲aⅴ在线观看 | 久久全国免费视频 | 成人永久免费 | 亚洲一区二区三区四区在线视频 | 超碰午夜 | 国产亚洲精品久久久久久 | 国产一级一级国产 | www.久久com | 久久人人97超碰精品888 | www.99久久.com | 久久a国产 | 天天综合天天做天天综合 | 日韩免费福利 | 婷婷国产v亚洲v欧美久久 | 久久亚洲免费视频 | 久久综合久久综合久久综合 | 在线观看免费黄视频 | 欧美日韩精品在线一区二区 | 国产视频在线观看一区 | 狠狠狠的干 | 六月丁香色婷婷 | 国产成人精品一区二区三区在线观看 | 亚洲成av | 久久精品国产v日韩v亚洲 | 91完整版观看 | 九九综合九九综合 | 久久 在线| 日韩欧美网址 | 狠狠狠狠狠狠天天爱 | 久久看片网站 | 免费日韩一区 | 欧美日韩在线免费视频 | 免费看成人av | 黄色a三级 | 亚洲激情校园春色 | 欧洲av不卡| 四虎影视精品成人 | 免费精品人在线二线三线 | 国产91精品一区二区麻豆亚洲 | 精品欧美一区二区在线观看 | 91精品推荐| 婷婷黄色片 | 中文字幕日韩无 | 一区二区三区在线免费观看视频 | 91在线小视频 | 国产成人福利在线 | 亚洲午夜精品久久久久久久久久久久 | 成人免费一区二区三区在线观看 | 国产精品va在线观看入 | 手机在线看永久av片免费 | 丁香视频五月 | 九九视频一区 | 一区三区在线欧 | 99精品视频播放 | 日韩网站在线观看 | 最近日本mv字幕免费观看 | 香蕉蜜桃视频 | 国产资源在线视频 | 狠狠夜夜 | 亚洲欧美综合精品久久成人 | 国产二区视频在线观看 | 精品不卡av| 国产污视频在线观看 | 精品自拍sae8—视频 | 99热手机在线 | 欧美精品一区二区在线播放 | 欧美在线视频一区二区三区 | 国产中文字幕国产 | 日韩av网站在线播放 | 在线观看亚洲专区 | 99久久国产免费看 | 亚洲视频在线播放 | 亚洲精品美女久久久久 | 亚洲 综合 专区 | 成年人免费av | 亚洲蜜桃av | 色吊丝在线永久观看最新版本 | 久久优| 日韩久久激情 | 久久精品一区二 | 成年人视频免费在线播放 | 91看片麻豆 | av一区二区三区在线观看 | 手机在线中文字幕 | 亚洲精品黄网站 | 国产免费久久精品 | 日韩免费视频 | 91资源在线播放 | 免费看的黄色 | 日韩欧美一级二级 | 国产成人免费高清 | 91久久黄色 | 干干夜夜 | 超碰国产人人 | 日韩在线观看精品 | 中文字幕资源在线观看 | 中文字幕资源网在线观看 | 福利视频午夜 | 精品在线一区二区三区 | 综合网伊人 | 亚洲毛片在线观看. | 奇米影视999| 中文字幕精品在线 | 久久精品网站免费观看 | 国产精品丝袜久久久久久久不卡 | 日本精品一区二区三区在线播放视频 | 一区二区三区在线视频111 | 五月天综合激情网 | 人人爽人人爽人人爽 | 一区二区三区电影大全 | 国产高清视频在线观看 | 97超碰在线久草超碰在线观看 | 91日韩精品| 91九色综合 | 日韩专区在线 | 国产性xxxx | 国产婷婷精品av在线 | 国产精品永久免费在线 | 黄色aa久久 | 亚洲国产精品va在线看 | 国产免码va在线观看免费 | 天天综合网入口 | 狠狠操狠狠干天天操 | 91视频链接 | 国产在线p | 国产最新视频在线观看 | 国内精品在线观看视频 | 日韩av片免费在线观看 | 中文字幕在线观 | 天天玩天天干天天操 | 亚洲天天摸日日摸天天欢 | 欧美国产一区二区 | 日日夜夜干 | 久草网免费 | japanese黑人亚洲人4k | 免费亚洲精品视频 | 黄色资源网站 | 天天曰天天爽 | 日韩精品久久久 | 亚洲a资源| 亚洲va在线va天堂va偷拍 | 麻豆免费观看视频 | 日韩一二三 | 在线观看一区视频 | 操夜夜操 | 人人草在线观看 | 中文字幕乱在线伦视频中文字幕乱码在线 | 日韩精品在线看 | 亚洲午夜大片 | 天天操福利视频 | 美女视频是黄的免费观看 | 97超在线视频 | 婷婷色网 | 在线观看免费成人av | 亚洲一级黄色大片 | 天天干天天爽 | 在线观看亚洲专区 | 亚洲精品456在线播放 | 天天色天天综合 | 久久美女免费视频 | 99c视频高清免费观看 | 色亚洲网 | 欧美夫妻生活视频 | av网址aaa| 日韩欧美一区二区三区黑寡妇 | 91精品国产一区 | 在线观看国产永久免费视频 | 久久精品麻豆 | 在线观看涩涩 | 天天色天天干天天 | 99视频免费看 | 999毛片| 国产日韩在线一区 | 美女黄久久 | 人人爽人人爽人人片av免 | 欧美日韩亚洲在线 | 一区二区三区四区精品视频 | 91亚洲在线 | 91激情| 欧美精品第一 | 91九色最新 | 亚洲片在线观看 | 色99久久 | 成人一级在线 | 久久一区91 | 看国产黄色大片 | 国产又黄又爽又猛视频日本 | 欧美巨大荫蒂茸毛毛人妖 | 免费在线观看日韩 | 婷婷六月色 | 91网址在线看 | 国产裸体视频bbbbb | 三上悠亚一区二区在线观看 | 久久亚洲二区 | 久久夜色精品国产欧美一区麻豆 | 91tv国产成人福利 | 国产精品一区二区视频 | 碰天天操天天 | 久久综合九色综合网站 | 99re视频在线观看 | 午夜影院在线观看18 | 99久久综合精品五月天 | 国模一区二区三区四区 | 亚洲涩涩涩涩涩涩 | 99精品一区二区 | 五月网婷婷 | 美女视频网 | 成年人免费电影在线观看 | 成人免费网视频 | 国内偷拍精品视频 | 在线观看视频黄色 | 免费在线电影网址大全 | 欧美精品午夜 | 国产亚洲欧美精品久久久久久 | 久久色亚洲 | 国产视频一区二区在线观看 | 天天干天天在线 | 国内久久精品视频 | 国产一区国产精品 | 五月婷婷开心 | 精品国产一区二区三区久久久蜜月 | 91精品视频免费看 | av大全在线播放 | 91精品啪在线观看国产线免费 | 99在线视频网站 | 国产高清中文字幕 | 国产精品久久伊人 | a久久久久 | 91精品在线观看入口 | 手机看片国产 | 日韩三级视频在线观看 | 国产免费久久 | 色在线观看网站 | 久久久高清免费视频 | 久久久久久久久久久福利 | 国产在线1区 | 看片网站黄色 | 中午字幕在线观看 | 欧美激情第一区 | 国产不卡毛片 | 九色精品免费永久在线 | 日韩在线第一 | 天天综合日日夜夜 | 欧美精彩视频在线观看 | 国产精品久久视频 | 99久久er热在这里只有精品15 | 国产精品中文 | 亚洲最新视频在线 | 1区2区视频 | 久久8精品| 成人9ⅰ免费影视网站 | 亚洲色视频 | 中国精品一区二区 | 国产精品9999久久久久仙踪林 | 国产高清久久 | 色香蕉视频 | 999国产精品视频 | 久久婷婷五月综合色丁香 | av成人免费网站 | 国产免费三级在线观看 | 91九色蝌蚪视频在线 | 久久午夜视频 | 青青河边草观看完整版高清 | 国产黄色成人av | 久久亚洲精品国产亚洲老地址 | 91亚洲网站| 久久久久久久久毛片 | 天天色天天骑天天射 | 国产在线视频在线观看 | 中文字幕麻豆 | 国产精品粉嫩 | 久久精久久精 | 青青河边草免费直播 | 四虎在线观看 | 色综合五月天 | 精品特级毛片 | 久久久久草 | 91在线视频播放 | 久久精品区 | 欧美一区二区三区免费观看 | 国产精品国产三级国产aⅴ无密码 | 精品美女在线视频 | 97超碰精品 | 日日干日日 | 黄色在线观看www | 久久久久久久久国产 | 国产精品久久久久免费观看 | 国产精品精品国产 | 精品国产_亚洲人成在线 | 国产精品18videosex性欧美 | 一区二区视频电影在线观看 | 国内精品久久久久久久久久久久 | 午夜精品久久久久久久99 | 亚洲精品乱码久久久久久蜜桃91 | 成年人视频在线 | 国产系列 在线观看 | 一区二区三区四区五区在线视频 | 综合铜03| 欧美精品乱码久久久久久按摩 | 精品免费国产一区二区三区四区 | 91你懂的 | 狠狠干五月天 | 高清av影院 | 中文在线8资源库 | 色偷偷888欧美精品久久久 | 成人黄色电影在线观看 | 免费观看全黄做爰大片国产 | 天天色天天艹 | 精品久久久久一区二区国产 | 91看片在线| 夜夜操天天摸 | 一区二区三区在线电影 | www.黄色片.com | 99精品在线免费视频 | 欧美日韩高清一区 | 在线观看岛国av | av理论电影 | 欧美少妇的秘密 | 有码中文字幕在线观看 | 日韩在线视频线视频免费网站 | 成人av在线看 | 亚洲精品在线视频网站 | 精品国产伦一区二区三区 | 免费网址在线播放 | 国产精品丝袜在线 | 91成人短视频在线观看 | 特级毛片爽www免费版 | 在线观看午夜 | 三级视频片 | 免费在线观看中文字幕 | 免费观看v片在线观看 | 国产精品一区二区av | av在线8 | 国产成人在线免费观看 | 亚洲黄色片在线 | 欧美性护士 | 在线观看亚洲精品 | 最新日韩视频 | 久久久香蕉视频 | 天天碰天天操 | 成年人电影免费在线观看 | 亚洲免费永久精品国产 | 黄色小说免费在线观看 | 精品国产一区二区三区久久久蜜月 | 综合色在线 | 国产成人久久av免费高清密臂 | 欧美日韩免费网站 | 人人爽久久涩噜噜噜网站 | 91成人精品视频 | 国产成人精品亚洲精品 | 国产无套一区二区三区久久 | 国产成人一区二区三区免费看 | 97超碰人人在线 | 亚洲专区在线播放 | 日韩av二区 | 免费视频在线观看网站 | 欧美视频国产视频 | 色综合久久久久久久久五月 | 成片免费观看视频 | 国产精品国产三级国产aⅴ9色 | 超碰在线公开免费 | 中文字幕91视频 | 欧美视屏一区二区 | 成人国产精品久久久久久亚洲 | 99欧美 | 91黄色小视频 | 午夜久久网| 日韩欧美一区视频 | 亚洲国产精品激情在线观看 | 国产精品免费在线观看视频 | av三级在线免费观看 | 亚洲精品国产综合99久久夜夜嗨 | 国产高清在线免费 | 人人爽网站 | 国产精品理论视频 | 天天拍天天干 | 欧美一性一交一乱 | 欧美伦理一区二区 | 国产美女久久久 | 亚洲精品国产精品乱码不99热 | av网站免费线看精品 | 日韩欧美国产精品 | av福利在线免费观看 | 97超碰免费在线 | 日韩网站中文字幕 | 激情五月av | 国产精品免费一区二区 | 又黄又色又爽 | 国产剧情一区 | 97视频免费在线 | 久草在线资源观看 | 免费黄在线观看 | 天天天干夜夜夜操 | 日本激情动作片免费看 | 国产一级黄色片免费看 | 色干综合 | 人人草人人草 | 99 精品 在线 | 亚洲欧美视频一区二区三区 | 日韩网页 | 欧美一区二区视频97 | 97视频在线播放 | 伊人久在线 | 亚在线播放中文视频 | 亚洲国产精品成人va在线观看 | 99视频在线免费看 | 欧美另类老妇 | 亚洲国产播放 | 看av免费| 亚洲精品www久久久 www国产精品com | 欧美激情视频一二三区 | 亚洲91视频 | 亚洲免费av在线 | 性色va| 九九视频这里只有精品 | 337p日本欧洲亚洲大胆裸体艺术 | 色大片免费看 | 中文字幕国产视频 | 在线观看国产一区 | 亚洲永久精品国产 | 久久国产精品久久久 | www色av| 国产探花在线看 | 亚洲区另类春色综合小说校园片 | 国产一卡久久电影永久 | 成人毛片在线视频 | 亚洲欧美国产精品18p | 婷婷六月综合网 | 国产大片免费久久 | 超碰人人干人人 | 精品视频不卡 | 亚洲男人天堂a | av电影免费 | 国产精品白浆 | 久草视频一区 | 久久九九影视网 | 四虎成人精品永久免费av | 国产精品女教师 | 亚洲伦理一区二区 | 午夜视频在线观看欧美 | 午夜国产在线观看 | 久久免费国产电影 | 亚洲精品乱码久久久久 | 中文字幕第一页在线播放 | 成人欧美在线 | 江苏妇搡bbbb搡bbbb | 亚洲一区黄色 | 日韩视频www | 久久99这里只有精品 | 日韩亚洲欧美中文字幕 | 成人免费观看网站 | 欧美亚洲国产一卡 | 精品国产久 | 久久久这里有精品 | 国产呻吟在线 | 制服丝袜在线 | 日女人免费视频 | 欧美日韩激情视频8区 | 亚洲综合丁香 | 国产91aaa | 91免费版在线观看 | 国产精品视频永久免费播放 | 欧美另类v | 亚州人成在线播放 | 久久综合网色—综合色88 | 丝袜精品视频 | 国产伦精品一区二区三区照片91 | 深夜男人影院 | 免费h漫在线观看 | 五月综合在线观看 | 久久av免费 | 中文字幕日本在线观看 | 精品一区二区久久久久久久网站 | 亚洲一区二区三区精品在线观看 | 国产亚洲精品xxoo | 蜜臀久久99精品久久久无需会员 | 韩国三级一区 | 99在线观看免费视频精品观看 | 国产午夜一级毛片 | 色综合久久综合网 | 国产精品原创av片国产免费 | 粉嫩av一区二区三区免费 | 欧美亚洲久久 | 久久久久久国产精品亚洲78 | 狠狠的操你 | 日韩有码专区 | 免费在线观看成年人视频 | 日韩电影在线一区 | 成人免费在线观看电影 | 午夜精品久久久久久久99婷婷 | 免费看片成人 | 天天天天干 | 国产精品理论视频 | 国产精品久久久久永久免费 | 美女黄久久| 亚洲伊人婷婷 | 成人黄大片视频在线观看 | av片一区二区| 免费三级影片 | 亚洲黄色app | 欧美日韩在线观看视频 | 亚洲精品视频在线观看免费视频 | 日韩理论电影在线观看 | 久久久国产精品成人免费 | 国产精品www | 色偷偷网站视频 | 超碰97人人干 | 久久综合狠狠狠色97 | 欧美精品乱码久久久久久按摩 | 91精品一区国产高清在线gif | 深夜免费福利网站 | 美女国产 | 91丨九色丨91啦蝌蚪老版 | 久操免费视频 | 一级理论片在线观看 | 久久免费99精品久久久久久 | 国产只有精品 | 国产精品久久久久免费 | 免费看的黄网站软件 | 在线观看岛国 | 色欧美成人精品a∨在线观看 | 亚洲国产成人在线观看 | 亚洲 欧美 成人 | 黄色成人在线 | 久久久黄色免费网站 | 黄色a三级| 久久综合久久伊人 | 中文字幕在线免费播放 | 国产精品久久久久久久电影 | 久久1区 | 成年人视频免费在线播放 | 69视频永久免费观看 | 六月天综合网 | 国产美女精品 | 亚洲精品在线免费观看视频 | 久久激情精品 | 91精选| 国产精品久久久久久久久久久免费看 | 日本精品视频在线播放 | 亚洲三级网| 亚洲国内精品视频 | 日韩三级免费观看 | 欧美动漫一区二区三区 | av片子在线观看 | 久久公开视频 | 日韩av电影手机在线观看 | 欧美一区三区四区 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 日本在线视频网址 | 麻豆免费在线视频 | 国产不卡视频在线 | 五月天激情综合 | 久久久亚洲成人 | 日日操狠狠干 | 久久久久久毛片精品免费不卡 | 一区在线观看视频 | 欧美日韩性生活 | 色一级片| 一级黄色片网站 | 伊人亚洲综合网 | 视频1区2区 | 天天插伊人 | 免费视频三区 | 久久伊人精品一区二区三区 | 成人 国产 在线 | 亚洲精品国偷自产在线99热 |