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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓自定义边栏英文索引控件

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓自定义边栏英文索引控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**
* 成員信息列表 -右側的導航條
*/
class EnglishIndexBar @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : View(context, attrs, defStyleAttr) {

private var mIndex = -1
private var mTextSize: Int = 0
private var mSelectTextColor: Int = 0
private var mSelectTextSize: Int = 0
private var mHintTextColor: Int = 0
private var mHintTextSize: Int = 0
private var mHintCircleRadius: Int = 0
private var mWaveRadius: Int = 0
private var mContentPadding: Int = 0
private var mBarWidth: Int = 0
private var mIndexWord : String? = "A"
private var isUpdateView : Boolean = false
private var mSlideBarRect: RectF= RectF()
private lateinit var mTextPaint: TextPaint
private lateinit var mPaint: Paint
private lateinit var mWavePaint: Paint
private lateinit var mHintPaint: Paint
private var mSelect: Int = 0
private var mPreSelect: Int = 0
private var mNewSelect: Int = 0
private lateinit var mTtextBgPaint: Paint
private var mRatioAnimator: ValueAnimator? = null
private var mAnimationRatio: Float = 0.toFloat()
private var mListener: OnLetterChangeListener? = null
private var mTouchY: Int = 0
private lateinit var mBitmap: Bitmap
private var mIsActionDown: Boolean = false
private var mIsShowWave: Boolean = true
private var mViewPager: NoScrollViewPager? = null
private var mLetters = arrayOf("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") //設置字母索引數據

init {
initAttribute(attrs, defStyleAttr)
initData()
}

private fun initAttribute(attrs: AttributeSet?, defStyleAttr: Int) {
val typeArray = context.obtainStyledAttributes(attrs, R.styleable.EnglishIndexBarTwo, defStyleAttr, 0)
mTextSize = typeArray.getDimensionPixelOffset(R.styleable.EnglishIndexBarTwo_textSize, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 9f,
resources.displayMetrics).toInt())
mSelectTextColor = typeArray.getColor(R.styleable.EnglishIndexBarTwo_selectTextColor, Color.parseColor("#FFFFFF"))
mSelectTextSize = typeArray.getDimensionPixelOffset(R.styleable.EnglishIndexBarTwo_selectTextSize, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10f,
resources.displayMetrics).toInt())
mHintTextColor = typeArray.getColor(R.styleable.EnglishIndexBarTwo_hintTextColor, Color.parseColor("#FFFFFF"))
mHintTextSize = typeArray.getDimensionPixelOffset(R.styleable.EnglishIndexBarTwo_hintTextSize,
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 16f,
resources.displayMetrics).toInt())
mHintCircleRadius = typeArray.getDimensionPixelOffset(R.styleable.EnglishIndexBarTwo_hintCircleRadius,
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24f,
resources.displayMetrics).toInt())
mWaveRadius = 20
mContentPadding = 2
mBarWidth = typeArray.getDimensionPixelOffset(R.styleable.EnglishIndexBarTwo_barWidth,
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 0f,
resources.displayMetrics).toInt())
if (mBarWidth == 0) {
mBarWidth = 2 * mTextSize
}
typeArray.recycle()
}

@TargetApi(Build.VERSION_CODES.KITKAT)
private fun initData() {
mTextPaint = TextPaint()
mPaint = Paint()
mTextPaint.isAntiAlias = true
mPaint.isAntiAlias = true
mTtextBgPaint = Paint()
mTtextBgPaint.isAntiAlias = true
mWavePaint = Paint()
mWavePaint.isAntiAlias = true
mHintPaint = Paint()
mSelect = -1
mBitmap = BitmapFactory.decodeResource(resources, R.drawable.bg_index_water)

}

override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
val contentLeft = (measuredWidth - mBarWidth ).toFloat()
val contentRight = (measuredWidth ).toFloat()
//val contentTop = mBarPadding.toFloat()
val contentBottom = (measuredHeight).toFloat()
mSlideBarRect.set(contentLeft, 0f, contentRight, contentBottom)

}

override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
//繪制slide bar 上字母列表
drawLetters(canvas)
}

/**
* 繪制slide bar 上字母列表
*/
private fun drawLetters(canvas: Canvas) {
//繪制圓角矩形
mPaint.style = Paint.Style.FILL
mPaint.color = Color.parseColor("#00000000")
canvas.drawRoundRect(mSlideBarRect, mBarWidth / 2.0f, mBarWidth / 2.0f, mPaint)
//繪制描邊
canvas.drawRoundRect(mSlideBarRect, mBarWidth / 2.0f, mBarWidth / 2.0f, mPaint)
//順序繪制文字
val itemHeight = (mSlideBarRect.bottom - mSlideBarRect?.top - (mContentPadding * 2).toFloat()) / mLetters.size
for (index in mLetters.indices) {
val baseLine = getTextBaseLineByCenter(
mSlideBarRect.top + mContentPadding.toFloat() + itemHeight * index + itemHeight / 2, mTextPaint, mTextSize)
mTextPaint.textSize = mTextSize.toFloat()
mTextPaint.textAlign = Paint.Align.CENTER
val pointX = mSlideBarRect.left + (mSlideBarRect.right - mSlideBarRect.left) / 2.0f


if(mLetters.contains(mIndexWord) && isUpdateView && mIndex == index){ //標識列表已經匹配的字母
isUpdateView = false
mTtextBgPaint.color = Color.parseColor("#61BE82")
mTextPaint.color = Color.parseColor("#FFFFFF")
if(mSelect != -1 && mSelect < mLetters.size){ // 繪制提示字符
if(mIsShowWave) {
canvas.drawBitmap(mBitmap, pointX - SystemUtil.sp2px(context, 48),
baseLine - SystemUtil.sp2px(context, 15), mWavePaint)
}
if (mSelect != -1) {
mHintPaint.color = mHintTextColor
mHintPaint.textSize = SystemUtil.sp2px(context,15).toFloat()
mHintPaint.textAlign = Paint.Align.CENTER
canvas.drawText(mLetters[index], pointX-SystemUtil.sp2px(context,35), baseLine+SystemUtil.sp2px(context,3), mHintPaint)
}
}
}else{
mTtextBgPaint.color = Color.parseColor("#00000000")
mTextPaint.color = Color.parseColor("#555555")
}
canvas.drawCircle( pointX, baseLine-dp2px(3),SystemUtil.sp2px(context,7).toFloat(),mTtextBgPaint)
canvas.drawText(mLetters[index], pointX, baseLine, mTextPaint)

}
}
/**
* dp轉px
* @param dpValue
* @return
*/
fun dp2px(dpValue: Int): Int {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue.toFloat(), resources.displayMetrics).toInt()
}
/**
* 通過獲取到的字母來匹配字母檢索列表的字母背景
* @parem Words
*/
fun notifiChangeIndexWordBg(word : String?){
if(mLetters.contains(word)){
this.mIndexWord = word
this.mIndex = mLetters.indexOf(word)
invalidate() //刷新界面,只會調用onDraw()方法
isUpdateView = true
}
}


/**
* 給定文字的center獲取文字的base line
*/
private fun getTextBaseLineByCenter(center: Float, paint: TextPaint, size: Int): Float {
paint.textSize = size.toFloat()
val fontMetrics = paint.fontMetrics
val height = fontMetrics.bottom - fontMetrics.top
return center + height / 2 - fontMetrics.bottom
}


override fun dispatchTouchEvent(event: MotionEvent): Boolean {
val y = event.y
val x = event.x
mPreSelect = mSelect
mNewSelect = (y / (mSlideBarRect.bottom - mSlideBarRect.top) * mLetters.size).toInt()
when (event.action) {
MotionEvent.ACTION_DOWN -> {
//保證down的時候在bar區域才相應事件
mViewPager?.setNoScroll(true)
if (x < mSlideBarRect.left || y < mSlideBarRect.top || y > mSlideBarRect.bottom) {
mIsActionDown = true
mIsShowWave = true
if(mNewSelect != -1 && mNewSelect < mLetters.size) {
mSelect = mNewSelect
if (mListener != null) {
mListener?.onLetterChange(mLetters[mNewSelect])
}
notifiChangeIndexWordBg(mLetters[mNewSelect])
}
val circleCenterX = measuredWidth + mHintCircleRadius - (2.0f * mWaveRadius
+ 2.0f * mHintCircleRadius) * mAnimationRatio
val canvas = Canvas()
canvas.drawBitmap(mBitmap, circleCenterX - SystemUtil.dp2px(context, 5),
mTouchY.toFloat() - SystemUtil.dp2px(context, 3), mWavePaint)
mViewPager?.postDelayed({
isUpdateView = true
mIsShowWave = false
invalidate()
},1000)
return false
}
mTouchY = y.toInt()
startAnimator(1.0f)
}
MotionEvent.ACTION_MOVE -> {
mIsActionDown = false
mIsShowWave = true
mTouchY = y.toInt()
if (mPreSelect != mNewSelect && mNewSelect >= 0 && mNewSelect < mLetters.size) {
mSelect = mNewSelect
if (mListener != null) {
mListener?.onLetterChange(mLetters[mNewSelect])
}
if(mSelect != -1) {
notifiChangeIndexWordBg(mLetters[mSelect])
}
}
}
MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP -> {
startAnimator(0f)
mSelect = -1
mViewPager?.setNoScroll(false)
}
else -> {
}
}
return true
}

/**
* get activity's ViewPager
*/
fun getActivitysViewpager(viewPager: NoScrollViewPager){
mViewPager = viewPager
}
@SuppressLint("NewApi")
private fun startAnimator(value: Float) {
if (mRatioAnimator == null) {
mRatioAnimator = ValueAnimator()
}
mRatioAnimator?.cancel()
mRatioAnimator?.setFloatValues(value)
mRatioAnimator?.addUpdateListener { value ->
mAnimationRatio = value.animatedValue as Float
//球彈到位的時候,并且點擊的位置變了,即點擊的時候顯示當前選擇位置
if (mAnimationRatio == 1f && mPreSelect != mNewSelect) {
if (mNewSelect >= 0 && mNewSelect < mLetters.size) {
mSelect = mNewSelect
if (mListener != null) {
mListener?.onLetterChange(mLetters[mNewSelect])
}
if(mSelect != -1) {
notifiChangeIndexWordBg(mLetters[mSelect])
}
}
}
invalidate()
}
mRatioAnimator?.start()
}

fun setOnLetterChangeListener(listener: OnLetterChangeListener) {
this.mListener = listener
}

interface OnLetterChangeListener {
fun onLetterChange(letter: String)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
這里需要注意的就是Adapter控制器,它需要把數據和第一個字的首字母關聯起來,通過創建一個數據實體類:

/**
* 懸浮窗實體
* @author guotianhui
*/
public class TitleEntity{

private AllMemberData mValue;
private String mSortLetters;

public AllMemberData getValue() {
return mValue;
}

public void setValue(AllMemberData value) {
mValue = value;
}

public String getSortLetters() {
return mSortLetters;
}

public void setSortLetters(String sortLetters) {
mSortLetters = sortLetters;
}

@Override
public String toString() {
return "TitleEntity{" +
"mValue=" + mValue +
", mSortLetters='" + mSortLetters + '\'' +
'}';
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
當從網絡獲取到數據之后,我們就可以通過獲取到數據之后,就可以把數據轉換成我們需要的格式:

for (titleItem in result.data!!) {
val titleEntity = TitleEntity()
titleEntity.value = titleItem
titleEntity.sortLetters = getEnglishIndexFristWord(titleItem)
mMemberInfotList.add(titleEntity)
}
1
2
3
4
5
6
其中RecyclerView懸浮的指示條是通過自定義分割線的形式自定義出來的:

mRecyclerView.addItemDecoration (TitleItemDecoration(context))
1
指示條的自定義代碼如下:

/**
* 所有成員列表頭部的懸浮title
* @author guotianhui
*/
public class TitleItemDecoration extends RecyclerView.ItemDecoration {

private int mItemHeight;
private int mTextPadding;
private int mTextSize;
private int mTextColor;
private int mBackgroundColor;
private TextPaint mTitleTextPaint;
private Paint mBackgroundPaint;

public TitleItemDecoration(Context context) {
mItemHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 23, context.getResources().getDisplayMetrics());
mTextPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 21, context.getResources().getDisplayMetrics());
mTextSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 14, context.getResources().getDisplayMetrics());
mTextColor = Color.parseColor("#666666");
mBackgroundColor = Color.parseColor("#f4f4f4");
mTitleTextPaint = new TextPaint();
mTitleTextPaint.setAntiAlias(true);
mTitleTextPaint.setTextSize(mTextSize);
mTitleTextPaint.setColor(mTextColor);
mBackgroundPaint = new Paint();
mBackgroundPaint.setAntiAlias(true);
mBackgroundPaint.setColor(mBackgroundColor);
}

/**
* 繪制標題
*/
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);
if (parent.getAdapter() == null || !(parent.getAdapter() instanceof AllMemberDataAdapter)) {
return;
}
AllMemberDataAdapter adapter = (AllMemberDataAdapter) parent.getAdapter();
if (adapter.getMItemFirstWordList() == null || adapter.getMItemFirstWordList().isEmpty()) {
return;
}
for (int i = 0; i < parent.getChildCount(); i++) {
final View child = parent.getChildAt(i);
int position = parent.getChildAdapterPosition(child);
if (titleAttachView(child, parent)) {
drawTitleItem(c, parent, child, adapter.getSortLetters(position));
}
}
}

/**
* 繪制懸浮標題
*/
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDrawOver(c, parent, state);
if (parent.getAdapter() == null || !(parent.getAdapter() instanceof AllMemberDataAdapter)) {
return;
}
AllMemberDataAdapter adapter = (AllMemberDataAdapter) parent.getAdapter();
if (adapter.getMItemFirstWordList() == null || adapter.getMItemFirstWordList().isEmpty()) {
return;
}
View firstView = parent.getChildAt(0);
int firstAdapterPosition = parent.getChildAdapterPosition(firstView);
c.save();
//找到下一個標題對應的adapter position
int nextLetterAdapterPosition = adapter.getNextSortLetterPosition(firstAdapterPosition);
if (nextLetterAdapterPosition != -1) {
//下一個標題view index
int nextLettersViewIndex = nextLetterAdapterPosition - firstAdapterPosition;
if (nextLettersViewIndex < parent.getChildCount()) {
View nextLettersView = parent.getChildAt(nextLettersViewIndex);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) nextLettersView.getLayoutParams();
int nextToTop = nextLettersView.getTop() - params.bottomMargin - parent.getPaddingTop();
if (nextToTop < mItemHeight * 2) {
//有重疊
c.translate(0, nextToTop - mItemHeight * 2);
}
}
}
mBackgroundPaint.setColor(mBackgroundColor);
c.drawRect(parent.getPaddingLeft(), parent.getPaddingTop(), parent.getRight() - parent.getPaddingRight(),
parent.getPaddingTop() + mItemHeight, mBackgroundPaint);
mTitleTextPaint.setTextSize(mTextSize);
mTitleTextPaint.setColor(mTextColor);
c.drawText(adapter.getSortLetters(firstAdapterPosition),
parent.getPaddingLeft() + firstView.getPaddingLeft() + mTextPadding,
getTextBaseLineByCenter(parent.getPaddingTop() + mItemHeight / 2, mTitleTextPaint),
mTitleTextPaint);
c.restore();
}

/**
* 設置空出繪制標題的區域
*/
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (titleAttachView(view, parent)) {
outRect.set(0, mItemHeight, 0, 0);
} else {
super.getItemOffsets(outRect, view, parent, state);
}
}

/**
* 繪制標題信息
*/
private void drawTitleItem(Canvas c, RecyclerView parent, View child, String letters) {
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
//繪制背景
c.drawRect(parent.getPaddingLeft(), child.getTop() - params.bottomMargin - mItemHeight,
parent.getWidth() - parent.getPaddingRight(), child.getTop() - params.bottomMargin, mBackgroundPaint);

float textCenterY = child.getTop() - params.bottomMargin - mItemHeight / 2;
//繪制標題文字
c.drawText(letters, parent.getPaddingLeft() + child.getPaddingLeft() + mTextPadding,
getTextBaseLineByCenter(textCenterY, mTitleTextPaint), mTitleTextPaint);
}
public float getTextBaseLineByCenter(float center, TextPaint paint) {
Paint.FontMetrics fontMetrics = paint.getFontMetrics();
float height = fontMetrics.bottom - fontMetrics.top;
return center + height / 2 - fontMetrics.bottom;
}
/**
* 判斷指定view的上方是否要空出繪制標題的位置
*
* @param view  指定的view
* @param parent 父view
*/
private boolean titleAttachView(View view, RecyclerView parent) {
if (parent.getAdapter() == null || !(parent.getAdapter() instanceof AllMemberDataAdapter)) {
return false;
}
AllMemberDataAdapter adapter = (AllMemberDataAdapter) parent.getAdapter();
if (adapter.getMItemFirstWordList() == null || adapter.getMItemFirstWordList().isEmpty()) {
return false;
}
int position = parent.getChildAdapterPosition(view);
//第一個一定要空出區域 + 每個都和前面一個去做判斷,不等于前一個則要空出區域
return position == 0 ||
null != adapter.getMItemFirstWordList().get(position) && !adapter.getSortLetters(position).equals(adapter.getSortLetters(position -1));

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
下面就是Adapter的代碼:

/**
*所有成員列表的Adapter
* @author guotianhui
*/
class AllMemberDataAdapter : BaseQuickAdapter<TitleEntity, BaseViewHolder> {

var mItemFirstWordList: ArrayList<TitleEntity>

constructor(layoutResId: Int, dataList: ArrayList<TitleEntity>) : super(layoutResId, dataList) {
mItemFirstWordList = dataList
}

fun getSortLetters(position: Int): String? {
return mItemFirstWordList[position].sortLetters
}

fun getSortLettersFirstPosition(letters: String): Int {
if (mItemFirstWordList == null || mItemFirstWordList.isEmpty()) {
return -1
}
var position = -1
for (index in mItemFirstWordList.indices) {
if (mItemFirstWordList[index].sortLetters == letters) {
position = index
break
}
}
return position
}

fun getNextSortLetterPosition(position: Int): Int {
if (mItemFirstWordList == null || mItemFirstWordList.isEmpty() || mItemFirstWordList.size <= position + 1) {
return -1
}
var resultPosition = -1
for (index in position + 1 until mItemFirstWordList.size) {
if (mItemFirstWordList[position]!= mItemFirstWordList[index]) {
resultPosition = index
break
}
}
return resultPosition
}

override fun getItemCount(): Int {
return if (mItemFirstWordList == null) 0 else mItemFirstWordList.size
}

override fun convert(helper: BaseViewHolder?, titleItem: TitleEntity?) {
val item = titleItem?.value
val headerImageView = helper?.getView<AppCompatImageView>(R.id.iv_member_header)

if(ObjectUtils.isNotEmpty(item?.studentHeadPic)) {
ImageLoader.newInstance().loadImageHeader(headerImageView, item?.studentHeadPic, R.drawable.icon_header_default)
}else{
headerImageView?.setImageResource(R.drawable.icon_header_default)
}
if(ObjectUtils.isNotEmpty(item?.nickname)) {
helper?.setText(R.id.tv_member_name, item?.nickname)
}else{
helper?.setText(R.id.tv_member_name, item?.studentName)
}
if(item?.studentGender ==1){ //1是男 2是女,0不要展示
helper?.setImageResource(R.id.iv_member_sex, R.drawable.ic_male_member)
}else{
helper?.setImageResource(R.id.iv_member_sex, R.drawable.ic_member_female)
}
if(item?.studentVIPFlag == true){
helper?.setVisible(R.id.iv_member_coach_state,true)
}else{
helper?.setVisible(R.id.iv_member_coach_state,false)
}
if(item?.studentLevel!! >=0) { //兼容小于0的情況
helper?.setText(R.id.tv_user_level, "Lv. " + item?.studentLevel.toString())
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
以上就是這個控件功能的所有代碼實現。下面的是我個人的自定義控件學習心得:安卓自定義控件,除了自定義一個自定義一個ViewGroup以外,我們還可以自定義一個View,雖然都是自定義。卻又有很大的不同。因為自定義ViewGroup可以理解為自定義了一個布局容器,這個布局容器的控件其實是可以自己通過Xml布局文件來定義的。但是如果你是自定義View,也就是說你直接繼承自View。因為View本身就是一個父類。而且View不可以像ViewGroup一樣添加一個布局。這樣我們就只能通過實現View的onMeasure()、onDraw()、onLayout()方法。這個三個方法,通過字面意思我們可以知道它們的調用順序,先是需要測量獲取自定義控件的框高,然后在調用onDarw繪制。
---------------------?

轉載于:https://www.cnblogs.com/ly570/p/10970832.html

總結

以上是生活随笔為你收集整理的安卓自定义边栏英文索引控件的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩精品一区二区三区三炮视频 | 日韩在线一级 | 丁香花在线观看免费完整版视频 | 国产精品久久久久久久久蜜臀 | 黄色小网站免费看 | 丁香婷婷深情五月亚洲 | 亚洲欧美国内爽妇网 | 日本性生活一级片 | 免费成人av在线看 | 在线 视频 一区二区 | 亚洲电影第一页av | 国产成人久久 | 成人99免费视频 | 91精品秘密在线观看 | 国产精品观看视频 | 精品一区二区免费视频 | 免费国产在线视频 | 国产成人免费在线观看 | 久久av伊人| 四虎在线永久免费观看 | 91亚洲网站| 日韩av一区二区在线播放 | 一区二区精品视频 | 日韩av免费一区二区 | 午夜三级理论 | 国产一区二区在线影院 | 久久成人欧美 | 91精品区| 日韩性久久| 亚洲高清在线视频 | 国产福利中文字幕 | 波多野结衣在线视频一区 | 国产一级在线 | 久久久免费av | 成人一区二区三区在线 | 一区二区三区中文字幕在线观看 | 国产精品九九久久久久久久 | 婷婷精品国产一区二区三区日韩 | 色综合久久久久综合体 | 日韩av美女| 欧美精品乱码久久久久久按摩 | 亚洲精品午夜国产va久久成人 | 国产精品久久久久影院 | 99久久久久久国产精品 | 久久露脸国产精品 | 国产免费叼嘿网站免费 | 中文字幕av免费在线观看 | 在线成人免费电影 | 日韩成人中文字幕 | 黄色av网站在线免费观看 | 高清久久久 | 中文字幕精品三级久久久 | 91麻豆精品国产91久久久无需广告 | 日韩色高清| 久久狠狠干 | 色偷偷网站视频 | 波多野结衣视频一区二区 | 久久手机在线视频 | 一级一片免费看 | 久久精品视频一 | 亚洲成av人片在线观看无 | 丁香色婷婷 | 中文字幕观看在线 | 日韩高清三区 | 日韩在线观看一区二区三区 | 在线观看你懂的网址 | 亚洲精品久久久久中文字幕m男 | 欧美一级片免费播放 | 五月天婷亚洲天综合网鲁鲁鲁 | 人人爽人人香蕉 | av中文字幕在线观看网站 | 永久免费毛片在线观看 | 五月天久久精品 | 日韩视频在线一区 | 亚洲精品网站在线 | 日韩精品中文字幕在线不卡尤物 | 成人午夜电影久久影院 | 99福利影院 | 一级免费黄视频 | 免费视频黄 | 亚洲国产人午在线一二区 | 香蕉在线影院 | 又黄又爽又色无遮挡免费 | 国产色拍拍拍拍在线精品 | 日韩乱码在线 | 五月宗合网 | 激情五月视频 | 91香蕉国产 | 精品国产理论片 | 欧美激情视频免费看 | 人人射人人爽 | 高潮毛片无遮挡高清免费 | 国产亚洲午夜高清国产拍精品 | 日韩免费视频观看 | 国产最新网站 | 开心色插| 九七视频在线观看 | 午夜视频在线观看一区二区三区 | 欧美一级高清片 | 久久av中文字幕片 | 91精品久久久久久久久久久久久 | 久久久久成人免费 | 成人在线观看影院 | 在线午夜电影神马影院 | 免费国产亚洲视频 | 国产精品麻豆一区二区三区 | 午夜影院一级片 | 国产精品久久久久久久久久东京 | 亚洲专区免费观看 | 最近2019中文免费高清视频观看www99 | 毛片网在线观看 | 亚州五月| 日韩av片无码一区二区不卡电影 | 男女啪啪视屏 | 久久深爱网 | 国产高清视频 | 国产一区二区精品久久 | 日韩av电影中文字幕在线观看 | 又黄又刺激视频 | 香蕉在线视频播放网站 | 成人av久久 | 国产黄色片久久久 | 在线免费国产视频 | 九九视频在线播放 | 18pao国产成视频永久免费 | 久久不射电影网 | 国产高清视频网 | 99精品久久精品一区二区 | 亚洲天堂激情 | 午夜精品久久久久久久久久久久 | 国产成人一区二区三区影院在线 | 日韩欧美精品在线 | 成人网在线免费视频 | 久草com| 欧美a级一区二区 | 久久久久久片 | 亚洲精品456在线播放第一页 | 天天骚夜夜操 | 在线小视频你懂的 | 一色屋精品视频在线观看 | 一级黄网 | 天天操天天色天天射 | 亚洲欧美视频一区二区三区 | 免费福利在线视频 | 色wwwww| 国产成人精品久久亚洲高清不卡 | 手机看片福利 | 亚洲激情六月 | 超碰成人免费电影 | 啪啪免费观看网站 | 国产麻豆精品久久一二三 | 亚洲综合精品视频 | 狠狠搞,com | 在线黄色国产电影 | 少妇bbw揉bbb欧美 | 日韩特黄一级欧美毛片特黄 | 日韩在线国产 | 亚洲日本欧美 | 亚洲国产影院av久久久久 | 日韩精品欧美精品 | 国内精品久久久久久久久久清纯 | 日韩va欧美va亚洲va久久 | 97综合在线| 日韩视频一二三区 | 五月天婷亚洲天综合网精品偷 | 99久久久久久久久久 | 欧美日韩免费观看一区二区三区 | 在线免费观看黄色小说 | 天天插天天色 | 97日日碰人人模人人澡分享吧 | 久久久精品一区二区 | 又黄又爽的免费高潮视频 | 成年人免费在线观看网站 | 欧美一区二区三区免费观看 | 伊人www22综合色 | 国产精品一区二区在线观看免费 | 成人在线视频免费观看 | 国产成人一二三 | 最近更新好看的中文字幕 | 免费a v在线 | 久久久久久99精品 | 色综合久久久久综合体桃花网 | 丁香色综合 | 4438全国亚洲精品观看视频 | 亚洲成av人片 | 激情黄色一级片 | 成片视频在线观看 | www.天天色| av中文字幕在线播放 | 午夜aaaa| 国内久久视频 | 在线有码中文 | 国产精品观看在线亚洲人成网 | 日韩av不卡在线播放 | 国产超碰在线观看 | www.黄色在线 | 99久久精品午夜一区二区小说 | 成人av资源在线 | 婷婷六月丁香激情 | 日韩av电影免费在线观看 | 欧美精品中文字幕亚洲专区 | 日韩亚洲国产精品 | 日韩欧美综合精品 | 成人在线视频在线观看 | 国内偷拍精品视频 | 国产一区播放 | 日本三级久久久 | 91精品国产高清自在线观看 | 色91在线视频 | 欧美人人爱 | 欧美成人va| 蜜臀av性久久久久蜜臀av | 色综合久久久久 | 成人av免费看| 久久精品日产第一区二区三区乱码 | 精品二区久久 | 99精品一级欧美片免费播放 | 免费亚洲婷婷 | 国产v在线观看 | www.综合网.com | 久久精品资源 | 中文字幕首页 | 欧美国产不卡 | 亚洲h在线播放在线观看h | 月下香电影 | 久久不卡视频 | 久久99日韩 | 日日干,天天干 | 天天干天天操av | 日韩一二区在线观看 | 91视频国产高清 | 亚洲高清久久久 | 六月婷婷久香在线视频 | 婷婷精品国产欧美精品亚洲人人爽 | 欧美国产三区 | 国产精品永久久久久久久www | 欧美性一级观看 | 欧美久久电影 | 天天操天天射天天操 | 亚洲综合成人婷婷小说 | 精品欧美一区二区三区久久久 | 91在线亚洲 | 久久久影片 | 日本公妇在线观看高清 | 韩国一区在线 | 久久精品亚洲 | 最近更新中文字幕 | 在线激情小视频 | 欧美精品乱码久久久久久按摩 | 97精品国产97久久久久久春色 | 美女精品久久久 | 99婷婷| 亚洲色图激情文学 | 久久99日韩 | 久久久精华网 | 美女网站在线观看 | 五月天免费网站 | 日本在线观看黄色 | 亚洲一二三区精品 | 狠狠ri| aaa日本高清在线播放免费观看 | 久久香蕉国产精品麻豆粉嫩av | 日韩爱爱网站 | 婷婷网五月天 | 手机色站 | 国产成人av综合色 | 午夜电影 电影 | 色一级片 | 香蕉色综合 | 成人在线视频免费 | 在线免费观看欧美日韩 | 精品女同一区二区三区在线观看 | 日韩3区| 国产成人精品av在线观 | 深爱激情五月网 | 麻豆国产精品视频 | 日本久久久久久 | 中文在线免费视频 | 久久夜夜夜 | 欧美激情视频久久 | 亚洲国产精品电影在线观看 | 91日韩在线视频 | 婷婷黄色片| 精品久久国产一区 | 久久久久激情电影 | 久久夜色电影 | 视频高清 | 亚洲国产成人在线播放 | 不卡国产在线 | 中文字幕高清 | 日p视频 | 日韩中文在线电影 | 色婷婷中文 | 亚洲 中文 欧美 日韩vr 在线 | 2023av在线| 欧美乱码精品一区二区 | 九草在线观看 | 九九久久免费视频 | 99热9| 五月激情在线 | 99精品国产高清在线观看 | 狠狠的干狠狠的操 | 久久婷婷五月综合色丁香 | 一区二区三区在线视频111 | 国产精品都在这里 | 免费开视频 | 免费黄色av电影 | 天天插综合网 | 人人射人人射 | 婷婷深爱 | 久福利 | 韩国av电影在线观看 | 久久久国产99久久国产一 | 亚洲视频在线观看 | www中文在线 | 亚洲国产美女久久久久 | 久久久综合 | 亚洲美女精品 | 狠狠色综合网站久久久久久久 | 在线视频观看你懂的 | 免费在线观看不卡av | 国产无遮挡又黄又爽在线观看 | 成人九九视频 | 激情久久小说 | 精品欧美一区二区三区久久久 | 国产一级电影免费观看 | 人人干人人上 | 日韩免费大片 | 精品视频久久久久久 | 欧美午夜理伦三级在线观看 | 五月天激情视频 | 久久免费视频一区 | 在线视频观看亚洲 | 久热只有精品 | 色婷婷电影网 | 中文字幕视频三区 | 中文字幕在线日本 | 国产在线观看国语版免费 | 久久久www成人免费毛片麻豆 | 国产美女网 | 国产精品观看 | 伊人国产女 | 免费高清av在线看 | 久久久久久久久久久网 | 久久亚洲欧美日韩精品专区 | 99人成在线观看视频 | 一区二区不卡视频在线观看 | 欧美成人aa | 最新av电影网址 | 久久久久99精品成人片三人毛片 | 久久国产精品视频观看 | 丁香六月婷婷激情 | 中文国产在线观看 | 免费看黄在线观看 | av中文字幕在线免费观看 | 日本中文字幕在线一区 | wwwwwww黄| 夜夜躁日日躁狠狠久久88av | av在线在线 | 久久论理| 玖玖国产精品视频 | 国产福利一区二区在线 | 日日草夜夜操 | 91喷水| 免费精品在线视频 | 在线看片一区 | 在线免费精品视频 | 超碰人人干人人 | 国产精品免费一区二区三区 | 精品国产乱码久久久久久三级人 | 国产精品99免费看 | 亚洲精品在线资源 | 国产成人高清av | 免费久久网 | 中文字幕精品一区二区三区电影 | 国产成人精品久久亚洲高清不卡 | 美女视频黄色免费 | 2019中文字幕第一页 | 亚洲精品大全 | 色五月激情五月 | 国产高清免费在线播放 | 激情图片qvod | 91成人破解版 | 久久九九九九 | 国产一区在线免费观看视频 | 91精品国自产在线 | 日本激情动作片免费看 | 玖玖在线免费视频 | 有码中文在线 | 在线免费黄色 | 欧美日韩国产在线精品 | 亚洲专区路线二 | 日韩高清免费观看 | 日韩av视屏在线观看 | 2019天天干天天色 | 精品国产亚洲日本 | 欧洲av在线 | 99c视频在线 | 天天躁日日躁狠狠躁av中文 | 99久久www免费 | 久久精品视频免费播放 | 色先锋av资源中文字幕 | 人人超碰97 | 久久视频精品在线 | 日韩视频中文 | 久久福利影视 | 欧美男同视频网站 | 日韩av电影中文字幕在线观看 | 亚洲精品观看 | 亚洲另类在线视频 | 国产一级a毛片视频爆浆 | 亚洲精品高清在线观看 | 色偷偷88888欧美精品久久久 | 人人射人人 | 九九热国产视频 | 青草视频在线 | 激情av网| 精品国产一区二区三区在线 | 天天摸天天舔 | 狠狠操.com | 欧美日韩精品二区第二页 | 97视频在线观看视频免费视频 | 国产 字幕 制服 中文 在线 | 9999在线观看 | 夜夜干天天操 | 91高清完整版在线观看 | 久久久999精品视频 国产美女免费观看 | 九九热国产视频 | 超碰人人射 | 正在播放国产一区二区 | 国产91国语对白在线 | 精品亚洲视频在线观看 | 999久久久久久久久久久 | 97国产在线| 不卡精品| 成人国产精品一区二区 | 欧洲亚洲精品 | 日韩欧美一区二区在线观看 | 91成人精品国产刺激国语对白 | 亚洲精品视频在线观看免费 | 四虎在线免费观看 | 日韩成人邪恶影片 | 亚洲精品一区二区三区高潮 | 久久爱导航 | 色婷婷成人 | 麻豆影视在线播放 | 日韩精选在线 | 91在线看 | 中文高清av | 欧洲激情在线 | 天天干,天天操,天天射 | 久久草网| 手机色在线| 91av电影在线观看 | 99热播精品| 97视频免费 | 99精品系列| 成人小视频在线播放 | 日韩一区二区三 | 西西www444 | 人人澡人人爽欧一区 | 国产美女免费视频 | 国内精品视频在线播放 | 久久久久亚洲国产精品 | 色综合天天干 | 国产在线国偷精品产拍免费yy | 天天射天天操天天干 | 激情五月五月婷婷 | 色视频网站免费观看 | 又污又黄网站 | 国产在线观看h | 国产精品 日韩 欧美 | 亚洲国产中文字幕在线观看 | 中文字幕久久精品一区 | 亚洲国产精品99久久久久久久久 | 国产日韩在线视频 | 日韩精品一区在线观看 | 日韩电影在线观看中文字幕 | 手机在线看永久av片免费 | 亚洲综合少妇 | 国产精品中文字幕av | 日韩女同一区二区三区在线观看 | 伊人成人久久 | 一区二区三区手机在线观看 | 精品亚洲一区二区三区 | 九九久久影视 | 久久久精品网站 | 亚洲精品在线一区二区三区 | 欧美日本在线视频 | 精品国自产在线观看 | 久久五月情影视 | 欧美福利网站 | 亚洲黄色免费在线 | 欧美日韩性生活 | 免费在线观看毛片网站 | 在线观看的a站 | 亚洲第二色 | 天天射成人 | 在线视频 你懂得 | 欧美99热| 九色视频网| 91av免费在线观看 | 欧美经典久久 | 亚洲一级在线观看 | 亚洲一级片在线观看 | 91香蕉视频在线 | 国产精品久久久久久久久久久久久久 | 国产成人av免费在线观看 | 免费高清在线观看电视网站 | 在线观看岛国av | 99国产精品免费网站 | 国产成人精品一区二区三区在线 | 在线免费观看视频一区 | 天天天综合| 最近中文字幕在线中文高清版 | 日韩有色| 欧美色图30p | 中文字幕av在线免费 | 亚洲成人国产 | 午夜骚影 | 国产精品 日韩精品 | 超碰夜夜| va视频在线 | 蜜桃av综合网 | 国产伦精品一区二区三区高清 | 久久香蕉影视 | 日夜夜精品视频 | 欧美专区亚洲专区 | 日本狠狠干 | 国产视频欧美视频 | 成年人免费观看在线视频 | 国产精品不卡av | 中文在线www | 日韩18p| av免费网| 九九亚洲视频 | 二区精品视频 | 国产一区在线视频播放 | 日韩三级不卡 | 亚洲麻豆精品 | 97国产在线播放 | 96视频在线 | 日本视频精品 | 91九色精品国产 | 国产精品第52页 | 久久视频这里只有精品 | 日本精品一区二区三区在线播放视频 | 久久精品五月 | 日批视频在线播放 | 综合天堂av久久久久久久 | 男女啪啪网站 | 91精品久| 国产 一区二区三区 在线 | 久久不射电影网 | 久久精品99国产精品亚洲最刺激 | 久久精品视频在线观看免费 | 欧美精品久久久久a | 日日夜精品 | 久久综合五月婷婷 | 丰满少妇对白在线偷拍 | 亚洲高清视频在线观看免费 | 亚洲最大av网 | 成人欧美一区二区三区在线观看 | 日本三级在线观看中文字 | 麻豆视频入口 | 精品久久久国产 | 五月婷婷丁香六月 | 国产成人一区二区三区影院在线 | 人人爽人人看 | 999久久久免费精品国产 | 国产精久久久久久妇女av | 97超碰人人澡人人 | 国产特级毛片aaaaaa毛片 | 中文字幕在线观看免费高清完整版 | www.夜夜骑.com | 视频成人永久免费视频 | 国产精品24小时在线观看 | 中文字幕永久免费 | 亚洲国产美女久久久久 | 日韩高清在线不卡 | 久久免费电影 | 精品国产一区二区久久 | 国内三级在线 | 香蕉一区 | 精品国产_亚洲人成在线 | 亚洲午夜av | av中文字幕在线播放 | 99视频这里只有 | 手机看片1042 | 黄色精品网站 | 性色av一区二区三区在线观看 | 中文字幕色在线视频 | 午夜黄网 | 精品伊人久久久 | 在线观看视频一区二区三区 | 国产黄色片久久 | 最近中文字幕免费 | 免费成人在线观看视频 | 日韩欧美在线一区二区 | 亚洲精品在线视频观看 | 97在线免费视频观看 | 五月婷婷视频在线观看 | 成年人免费观看国产 | 国产黄色成人 | 又黄又爽的免费高潮视频 | 丁香花在线视频观看免费 | 97麻豆视频 | 欧美污在线观看 | 久99视频 | www.99久久.com | 天堂av免费观看 | 视频一区二区免费 | 欧美日韩不卡在线观看 | 特级aaa毛片 | 久久精品激情 | 日韩精品国产一区 | 日韩激情小视频 | 久久久免费在线观看 | 色美女在线 | 国产精品久久99综合免费观看尤物 | 亚洲精品视频中文字幕 | 日韩一级片大全 | 欧美日韩中 | 久草在线视频在线观看 | 中文字幕二区三区 | 日日日操操| 久草在线免费播放 | 久久精品男人的天堂 | 日韩欧美xxx | 日本中文字幕视频 | 精品国产一区二区三区在线 | 欧美色综合 | 中文字幕在线一区观看 | 在线观看成人毛片 | 午夜国产一区二区 | 亚洲一区二区三区四区在线视频 | 亚洲狠狠干 | 久久 一区| 免费试看一区 | 911久久香蕉国产线看观看 | 美女网站色 | 国产免费不卡av | 国产一区二区三区在线 | 色婷婷激情综合 | 日韩成人中文字幕 | 激情文学综合丁香 | 国产高清成人 | 亚洲永久精品国产 | 成片免费观看视频 | www.久草.com | 国产一级电影在线 | 国产一区二区三区午夜 | 国产欧美精品在线观看 | 国产又粗又硬又长又爽的视频 | 免费观看91视频大全 | 久久久 激情 | 精品久久毛片 | 日韩免费福利 | 九九热视频在线播放 | 国产精品久久久久一区二区国产 | 成全免费观看视频 | 国产精品一区电影 | 国色天香第二季 | 91人人澡人人爽 | 国产精品视频久久 | 在线黄色av电影 | 久久国产精品网站 | av成人在线网站 | 精品国产福利在线 | 精品久久片 | 欧美精品乱码久久久久久按摩 | 国产精品久久艹 | 国产区在线视频 | 亚洲欧洲精品一区 | 天天操天天操天天操天天操 | 97视频免费在线观看 | 99精品久久久久久久久久综合 | 亚洲精品h | 国产乱码精品一区二区三区介绍 | 久久歪歪 | 在线看日韩av | 一区二区中文字幕在线播放 | 99在线精品视频 | 亚洲精品视频第一页 | 国内丰满少妇猛烈精品播 | 日韩激情第一页 | 有没有在线观看av | 欧美精品乱码久久久久 | 天天操偷偷干 | av在线播放观看 | 国产精品毛片一区二区三区 | av免费福利 | 丁香六月激情 | 国产久草在线 | 久久97精品 | 精品国产伦一区二区三区观看说明 | 久久免费在线视频 | 国产精品一区二区免费 | 午夜免费久久看 | 国产精品免费久久久 | 亚洲国产精品视频在线观看 | 日韩理论在线播放 | 久久亚洲精品电影 | 久久一区国产 | 97成人免费 | 91av在线免费播放 | 久久视频在线免费观看 | 日本不卡一区二区 | 国产高清免费在线观看 | 在线性视频日韩欧美 | 午夜.dj高清免费观看视频 | 色射色| 国产精品久久久久一区二区国产 | 日韩二区在线观看 | 欧美一级性生活片 | 91最新在线观看 | 激情图片qvod | 精品伊人久久久 | 久久69精品 | 日韩一二三区不卡 | 久久a热6 | 99热九九这里只有精品10 | 天堂av网址 | 免费在线观看一级片 | 亚洲成人资源在线 | 99色视频在线 | 亚洲天堂激情 | 国产精品手机在线 | 精品无人国产偷自产在线 | 在线观看免费观看在线91 | 91在线最新| 久久高清片 | 久久精品美女视频网站 | 精品久久久免费 | 日韩精品视频在线免费观看 | 激情av在线资源 | 久久久久亚洲精品 | 激情综合网天天干 | 日韩欧美一区二区三区视频 | a黄色影院 | 亚洲国产精品一区二区久久hs | 亚洲午夜久久久综合37日本 | 欧美精品一区在线发布 | 国产一区91 | 久久99久久99精品免观看软件 | 日韩免费在线观看视频 | 欧美日韩一区二区在线观看 | 亚洲精品国偷自产在线91正片 | 黄色软件在线看 | 日韩高清免费观看 | 久久综合五月 | 免费观看国产精品 | 国产成人精品免费在线观看 | 国产视频一区在线免费观看 | 91成人免费 | 精品美女久久久久久免费 | 亚洲在线免费视频 | 国产午夜精品一区二区三区在线观看 | 久二影院 | 日韩av一区二区三区在线观看 | 欧美午夜久久久 | 亚洲国产精品推荐 | 国产只有精品 | 99九九99九九九视频精品 | a资源在线 | 一本色道久久综合亚洲二区三区 | 国产精成人品免费观看 | av品善网| av黄色免费在线观看 | 日韩精品中文字幕一区二区 | 国产美女久久久 | 91精品国产高清自在线观看 | 欧美日韩视频在线播放 | 国产无吗一区二区三区在线欢 | 蜜臀av性久久久久蜜臀av | 久久久免费播放 | 成人黄色在线视频 | www欧美xxxx| 中日韩免费视频 | 日韩一二区在线 | 亚洲三级性片 | 免费电影一区二区三区 | 欧美日韩性视频 | 亚洲一级黄色大片 | 国产一区二区在线免费观看 | 在线观看黄色av | av福利在线免费观看 | 精品1区2区3区 | 国产成人精品国内自产拍免费看 | 高清精品在线 | 国产中文字幕亚洲 | 在线观看国产成人av片 | 久久久久久高潮国产精品视 | 婷婷激情久久 | 亚洲成av人片在线观看香蕉 | 日韩精品一区二区三区免费观看视频 | 久久精品2 | 手机成人在线电影 | 99热最新地址 | 亚洲一区二区天堂 | 亚洲欧美精品在线 | 成人毛片100免费观看 | 成年人免费看av | 亚洲免费av片 | 欧美日韩免费观看一区=区三区 | 国产亚洲精品久久久久久无几年桃 | 中文字幕亚洲高清 | 久久好看免费视频 | 就操操久久 | 久久精品国产一区二区三区 | 久久超碰在线 | 久久精品视频网 | 在线观av| 五月天狠狠操 | 在线观看亚洲精品 | 日韩精品aaa | a级国产乱理伦片在线观看 亚洲3级 | 在线国产99 | 久久99精品久久久久婷婷 | 久久亚洲综合国产精品99麻豆的功能介绍 | 四虎在线免费观看 | 在线a人片免费观看视频 | 国产 av 日韩| 最新在线你懂的 | 日韩精品一区二区三区不卡 | 国产精品福利在线播放 | 日韩成人在线免费观看 | 欧美日本不卡视频 | 在线免费国产 | 九色琪琪久久综合网天天 | 久草在线视频首页 | 欧美极品裸体 | 99精品久久只有精品 | 中文字幕在线视频第一页 | 亚洲人人精品 | 国产91精品一区二区麻豆网站 | www好男人 | 日本女人逼 | 国产专区精品视频 | 8x成人免费视频 | 999成人精品 | 日韩欧美在线观看一区二区三区 | 国产精品a久久 | 天堂av网站 | 久久久 精品 | 最近中文字幕免费av | 在线观看视频福利 | av久久久 | 日韩福利在线观看 | 444av| 97超碰超碰 | 国产精品久久毛片 | av日韩av| 成人性生交大片免费观看网站 | 欧美人体xx | 久久精品99国产精品酒店日本 | 婷婷六月综合网 | 精品免费视频 | 在线v片免费观看视频 | 国产精品美女久久久久久久久 | 国产一级视屏 | 99在线观看免费视频精品观看 | 久久国产精品免费看 | 国产视频中文字幕在线观看 | 婷婷色在线 | 91av视频在线播放 | 成人精品视频 | 2024国产精品视频 | 亚洲激情p | 久久久免费高清视频 | 色噜噜日韩精品欧美一区二区 | 岛国片在线 | 国产一二区在线观看 | 国产精品理论片在线观看 | 成人午夜精品福利免费 | 久久精品激情 | 欧美日韩中字 | 国产3p视频 | 免费午夜视频在线观看 | 亚洲国内精品在线 | 最新日韩视频在线观看 | 人人玩人人添人人澡97 | 亚洲精品99| 大胆欧美gogo免费视频一二区 | 国产免费人人看 | 99热精品国产一区二区在线观看 | 久久在线精品 | 97国产| 久久久国产网站 | 超碰人人在线 | 九九热只有这里有精品 | 午夜精品三区 | 久久久久久久国产精品视频 | 又大又硬又黄又爽视频在线观看 | 国产91精品看黄网站在线观看动漫 | 亚洲国产三级 | 久久久久久亚洲精品 | 丁香六月天婷婷 | 黄色1级大片 | 91粉色视频 | 97超碰资源 | 日韩无在线 | 美女网站一区 | 国产日韩精品一区二区三区在线 | 久久久久久久久久久高潮一区二区 | 玖玖999| 一级黄毛片 | 国产成人免费av电影 | 欧美日韩在线视频免费 | 亚洲精品国产高清 | 青草视频在线看 | 三级在线国产 | 亚洲欧美成人综合 | 久久久久久久久久久免费 | 九九热av | 又长又大又黑又粗欧美 | 草久在线观看 | 四虎国产精品永久在线国在线 | 96av麻豆蜜桃一区二区 | 91在线免费播放 | 国产亚洲精品日韩在线tv黄 | 操操操干干干 | 欧美国产91 | 自拍超碰在线 | 激情五月婷婷 | 有码视频在线观看 | 天天操狠狠操网站 | 97在线精品视频 | 久久久夜色 | 日韩在线观看中文字幕 | 亚洲精品一区二区精华 | 国产无套精品久久久久久 | 日韩免费在线视频 | 久久99精品国产麻豆宅宅 | 国产精品久久久久久电影 | 久久国产精品久久久久 | 日韩视频在线不卡 | 久久久久国产成人精品亚洲午夜 | 免费在线观看日韩欧美 | 91香蕉视频在线下载 | 国产小视频在线播放 | 亚洲三级在线播放 | 韩国在线视频一区 | 福利视频一二区 | 91精彩在线视频 | 国产一级二级在线 | 综合久久婷婷 | 日韩欧美精品在线 | 日韩精品视频久久 | 久久99精品国产一区二区三区 | 久久久久伦理电影 | 国产三级香港三韩国三级 | 久久亚洲免费视频 | 天天干天天操人体 | 国产乱码精品一区二区蜜臀 | 国产第一页在线播放 | 国产第一页福利影院 | 亚洲第一区在线观看 | 久草在线免费播放 | 999久久久免费精品国产 | 97人人澡人人添人人爽超碰 | 亚洲色影爱久久精品 | 久久高清国产 | 婷婷丁香狠狠爱 | 99热最新 | 成人a v视频 | 久久人人爽人人爽 | 中文字幕高清在线 | 久久久精品一区二区三区 | 国产精品美女免费视频 | 久久综合久久久久88 | 狠狠干成人 | 亚洲午夜精品久久久久久久久久久久 | 中文在线字幕观看电影 | 国产日韩视频在线 | av黄色在线观看 | 人人草人 | 久久久久久久久久久福利 | 成人黄色小视频 | 国产在线视频一区 | 日韩免 | 手机在线看永久av片免费 | 亚洲色图27p | 国产精品一区二区免费视频 | 久久亚洲私人国产精品va | 久久黄色小说 | 激情文学综合丁香 | 久草99| 久久久久成人精品 | 国产小视频免费观看 | 蜜臀av性久久久久蜜臀av | 日韩精品不卡在线观看 | 久久短视频 | 国产成人精品在线播放 | 五月婷婷综合网 | 99久久婷婷国产综合亚洲 | 在线观看日韩视频 | av免费在线观看网站 |