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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android动画送礼物,Android仿直播类app赠送礼物功能

發布時間:2023/12/4 Android 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android动画送礼物,Android仿直播类app赠送礼物功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直播界面

實現的是播放本地的視頻文件:

/**

* 直播界面,用于對接直播功能

*/

public class LiveFrag extends Fragment {

private ImageView img_thumb;

private VideoView video_view;

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.frag_live, null);

img_thumb = view.findViewById(R.id.img_thumb);

img_thumb.setVisibility(View.GONE);

video_view = view.findViewById(R.id.video_view);

video_view.setVisibility(View.VISIBLE);

video_view.setVideoURI(Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.video_1));

video_view.start();

video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

video_view.setVideoURI(Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.video_1));

//或 //mVideoView.setVideoPath(Uri.parse(_filePath));

video_view.start();

}

});

return view;

}

}

布局文件 frag_live.xml 如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/video_view"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:clickable="false"

android:focusable="false"

android:visibility="gone" />

android:id="@+id/img_thumb"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:clickable="false"

android:focusable="false"

android:scaleType="centerCrop"

android:src="@mipmap/img_video_1"

android:visibility="visible" />

滑動隱藏效果

需要實現的效果如下:

自定義DialogFragment,使用ViewPager,第一個為空的Fragment,第二個為我們需要的Fragment,左右滑動來切換顯示和隱藏效果。

觀眾功能交互頁面 InteractiveFrag 如下:

/**

* 觀眾功能交互頁面, 滑動隱藏效果

*/

public class InteractiveFrag extends DialogFragment {

public View view;

public Context myContext;

private ViewPager vp_interactive;

private LayerFrag layerFrag;

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

view = inflater.inflate(R.layout.frag_interactive, null);

// 初始化

initView();

initData();

return view;

}

/**

* 初始化View

*/

public void initView() {

vp_interactive = view.findViewById(R.id.vp_interactive);

}

/**

* 初始化數據

*/

public void initData() {

// EmptyFrag:什么都沒有

// LayerFrag:交互界面

// 這樣就達到了滑動隱藏交互的需求

vp_interactive.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {

@Override

public int getCount() {

return 2;

}

@Override

public Fragment getItem(int position) {

if (position == 0) {

return new EmptyFrag(); // 返回空界面的fragment

} else if (position == 1) {

return layerFrag = new LayerFrag(); // 返回交互界面的frag

} else { // 設置默認

return new EmptyFrag();

}

}

});

// 設置默認顯示交互界面

vp_interactive.setCurrentItem(1);

// 同時將界面改為resize已達到軟鍵盤彈出時Fragment不會跟隨移動

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

}

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

// 設置DialogFragment的樣式,這里的代碼最好還是用我的,大家不要改動

Dialog dialog = new Dialog(getActivity(), R.style.MainDialog) {

@Override

public void onBackPressed() {

super.onBackPressed();

getActivity().finish();

}

};

return dialog;

}

}

frag_interactive.xml文件如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/vp_interactive"

android:layout_width="match_parent"

android:layout_height="match_parent" />

用戶交互頁 LayerFrag:

public class LayerFrag extends Fragment {

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

return inflater.inflate(R.layout.frag_layer, null);

}

}

frag_layer:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/ll_anchor"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_vertical"

android:orientation="horizontal"

android:paddingLeft="10dp"

android:paddingTop="10dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:background="@drawable/bg_radius_top_black"

android:gravity="center_vertical"

android:orientation="vertical"

android:paddingLeft="55dp"

android:paddingTop="2dp"

android:paddingRight="10dp"

android:paddingBottom="2dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="十三妹哦"

android:textColor="@android:color/white"

android:textSize="12sp" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center_vertical"

android:orientation="horizontal">

android:layout_width="35dp"

android:layout_height="20dp"

android:src="@drawable/hani_icon_tag_exp" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="5dp"

android:text="17萬"

android:textColor="@android:color/white"

android:textSize="10sp" />

android:id="@+id/lv_anchorIcon"

android:layout_width="50dp"

android:layout_height="50dp"

android:src="@drawable/zf"

app:border_color="@color/colorWhite"

app:border_width="1dp" />

android:id="@+id/hlv_audience"

android:layout_width="match_parent"

android:layout_height="45dp"

android:layout_marginLeft="10dp" />

android:id="@+id/rl_num"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/ll_anchor"

android:layout_marginTop="5dp"

android:paddingLeft="10dp"

android:paddingRight="10dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/bg_radius_bottom_pink"

android:gravity="center_vertical"

android:paddingLeft="10dp"

android:paddingTop="2dp"

android:paddingRight="10dp"

android:paddingBottom="2dp">

android:layout_width="20dp"

android:layout_height="10dp"

android:src="@drawable/molive_icon_charm_lv_20" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="5dp"

android:text="小時榜單第5名"

android:textColor="#fff"

android:textSize="10sp" />

android:id="@+id/tv_momocode"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:background="@drawable/bg_radius_top_black"

android:paddingLeft="10dp"

android:paddingTop="2dp"

android:paddingRight="10dp"

android:paddingBottom="2dp"

android:text="MoMo: 12345678"

android:textColor="@android:color/white"

android:textSize="10sp" />

android:id="@+id/ll_gift_group"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_above="@+id/lv_message"

android:layout_marginTop="10dp"

android:layout_marginBottom="10dp"

android:animateLayoutChanges="true"

android:gravity="top"

android:orientation="vertical" />

android:id="@+id/lv_message"

android:layout_width="230dp"

android:layout_height="150dp"

android:layout_above="@+id/fl_bottom"

android:layout_marginLeft="10dp"

android:cacheColorHint="#00000000"

android:divider="@null"

android:dividerHeight="5dp"

android:listSelector="#00000000"

android:scrollbarStyle="outsideOverlay"

android:scrollbars="none"

android:transcriptMode="normal" />

android:id="@+id/fl_bottom"

android:layout_width="match_parent"

android:layout_height="70dp"

android:layout_alignParentStart="true"

android:layout_alignParentBottom="true">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/transparent"

android:gravity="center_vertical"

android:orientation="horizontal"

android:paddingLeft="10dp"

android:paddingRight="10dp">

android:id="@+id/tv_chat"

android:layout_width="40dp"

android:layout_height="70dp"

android:gravity="center"

android:text="聊天"

android:textColor="#333"

android:textSize="10sp" />

android:layout_width="0dp"

android:layout_height="1dp"

android:layout_weight="1" />

android:id="@+id/btn_gift01"

android:layout_width="40dp"

android:layout_height="70dp"

android:layout_marginRight="5dp"

android:gravity="center"

android:text="送香皂"

android:textColor="#333"

android:textSize="12sp" />

android:id="@+id/btn_gift02"

android:layout_width="40dp"

android:layout_height="70dp"

android:layout_marginRight="5dp"

android:gravity="center"

android:text="送玫瑰"

android:textColor="#333"

android:textSize="12sp" />

android:id="@+id/btn_gift03"

android:layout_width="40dp"

android:layout_height="70dp"

android:layout_marginRight="5dp"

android:gravity="center"

android:text="送愛心"

android:textColor="#333"

android:textSize="12sp" />

android:id="@+id/btn_gift04"

android:layout_width="40dp"

android:layout_height="70dp"

android:layout_marginRight="5dp"

android:gravity="center"

android:text="送蛋糕"

android:textColor="#333"

android:textSize="12sp" />

android:id="@+id/ll_inputparent"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="5dp"

android:background="@android:color/white"

android:paddingLeft="10dp"

android:paddingRight="10dp"

android:visibility="gone">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center_vertical"

android:orientation="horizontal">

android:id="@+id/et_chat"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:background="@android:color/white"

android:hint="在此輸入你要說的話!"

android:maxLength="30"

android:paddingTop="10dp"

android:paddingBottom="10dp"

android:textColor="#888889"

android:textColorHint="#c8c8c8"

android:textSize="12sp" />

android:id="@+id/tv_send"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:background="@android:color/holo_blue_bright"

android:paddingLeft="10dp"

android:paddingTop="5dp"

android:paddingRight="10dp"

android:paddingBottom="5dp"

android:text="發送"

android:textColor="@android:color/white"

android:textSize="12sp" />

EmptyFrag:

/**

* 空的fragment

*/

public class EmptyFrag extends Fragment {

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

return inflater.inflate(R.layout.frag_empty, null);

}

}

frag_empty.xml:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/transparent"

android:orientation="vertical">

在MainActivity中使用FrameLayout布局,將觀眾功能交互頁面 InteractiveFrag 覆蓋在 直播頁面LiveFrag上面。

MainActivity:

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 加載直播fragment

LiveFrag liveFrag = new LiveFrag();

getSupportFragmentManager().beginTransaction().add(R.id.fl_root, liveFrag).commit();

// 加載

new InteractiveFrag().show(getSupportFragmentManager(), "InteractiveFrag");

}

}

activity_main.xml :

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/fl_root"

android:layout_width="match_parent"

android:layout_height="match_parent" />

用戶交互頁實現

MagicTextView動畫效果

MagicTextView代碼在文章最后展示。

我們先實現如下動畫效果

android:id="@+id/mtv_giftNum"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="5dp"

android:layout_toRightOf="@+id/rlparent"

android:includeFontPadding="false"

android:text="x1"

android:textColor="@android:color/holo_red_dark"

android:textSize="30sp"

android:textStyle="bold"

app:strokeColor="@android:color/white"

app:strokeJoinStyle="miter"

app:strokeWidth="2" />

動畫:

public class NumberAnim {

private Animator lastAnimator;

public void showAnimator(View v) {

if (lastAnimator != null) {

lastAnimator.removeAllListeners();

lastAnimator.cancel();

lastAnimator.end();

}

ObjectAnimator animScaleX = ObjectAnimator.ofFloat(v, "scaleX", 1.3f, 1.0f);

ObjectAnimator animScaleY = ObjectAnimator.ofFloat(v, "scaleY", 1.3f, 1.0f);

AnimatorSet animSet = new AnimatorSet();

animSet.playTogether(animScaleX, animScaleY);

animSet.setDuration(200);

lastAnimator = animSet;

animSet.start();

}

}

mtv_giftNum.setText("x" + count);

giftNumberAnim = new NumberAnim(); // 初始化數字動畫

mtv_giftNum.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

count++;

mtv_giftNum.setText("x" + count);

giftNumberAnim.showAnimator(mtv_giftNum);

}

});

禮物進入時動畫

進入動畫設置為decelerate_interpolator減速插值器:

android:duration="500"

android:fromXDelta="-100%p"

android:interpolator="@android:anim/decelerate_interpolator"

android:toYDelta="0%p">

/**

* 刷禮物的方法

*/

private void showGift(String tag) {

View newGiftView = ll_gift_group.findViewWithTag(tag);

// 是否有該tag類型的禮物

if (newGiftView == null) {

// 獲取禮物

newGiftView = getNewGiftView(tag);

ll_gift_group.addView(newGiftView);

// 播放動畫

newGiftView.startAnimation(inAnim);

final MagicTextView mtv_giftNum = newGiftView.findViewById(R.id.mtv_giftNum);

inAnim.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationRepeat(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

giftNumberAnim.showAnimator(mtv_giftNum);

}

});

} else {

// 如果列表中已經有了該類型的禮物,則不再新建,直接拿出

// 更新標識,記錄最新修改的時間,用于回收判斷

ImageView iv_gift = newGiftView.findViewById(R.id.iv_gift);

iv_gift.setTag(System.currentTimeMillis());

// 更新標識,更新記錄禮物個數

MagicTextView mtv_giftNum = newGiftView.findViewById(R.id.mtv_giftNum);

int giftCount = (int) mtv_giftNum.getTag() + 1; // 遞增

mtv_giftNum.setText("x" + giftCount);

mtv_giftNum.setTag(giftCount);

giftNumberAnim.showAnimator(mtv_giftNum);

}

}

/**

* 獲取禮物

*/

private View getNewGiftView(String tag) {

// 添加標識, 該view若在layout中存在,就不在生成(用于findViewWithTag判斷是否存在)

View giftView = LayoutInflater.from(myContext).inflate(R.layout.item_gift, null);

giftView.setTag(tag);

// 添加標識, 記錄生成時間,回收時用于判斷是否是最新的,回收最老的

ImageView iv_gift = giftView.findViewById(R.id.iv_gift);

iv_gift.setTag(System.currentTimeMillis());

// 添加標識,記錄禮物個數

MagicTextView mtv_giftNum = giftView.findViewById(R.id.mtv_giftNum);

mtv_giftNum.setTag(1);

mtv_giftNum.setText("x1");

switch (tag) {

case "gift01":

iv_gift.setImageResource(GiftIcon[0]);

break;

case "gift02":

iv_gift.setImageResource(GiftIcon[1]);

break;

case "gift03":

iv_gift.setImageResource(GiftIcon[2]);

break;

case "gift04":

iv_gift.setImageResource(GiftIcon[3]);

break;

}

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

lp.topMargin = 10;

giftView.setLayoutParams(lp);

return giftView;

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_gift01: // 禮物1,送香皂

showGift("gift01");

break;

case R.id.btn_gift02: // 禮物2,送玫瑰

showGift("gift02");

break;

case R.id.btn_gift03: // 禮物3,送愛心

showGift("gift03");

break;

case R.id.btn_gift04: // 禮物4,送蛋糕

showGift("gift04");

break;

}

}

禮物移出動畫

實現的效果如下:

禮物移出時使用accelerate_interpolator加速差值器

android:duration="500"

android:fromYDelta="0%p"

android:interpolator="@android:anim/accelerate_interpolator"

android:toYDelta="-100%p">

/**

* 移除禮物列表里的giftView

*/

private void removeGiftView(final int index) {

// 移除列表,外加退出動畫

final View removeGiftView = ll_gift_group.getChildAt(index);

outAnim.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationRepeat(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

ll_gift_group.removeViewAt(index);

}

});

// 開啟動畫,因為定時原因,所以可能是在子線程

getActivity().runOnUiThread(new Runnable() {

@Override

public void run() {

removeGiftView.startAnimation(outAnim);

}

});

}

如果顯示的禮物大于3種,就將最早的那種禮物移除:

// 是否有該tag類型的禮物

if (newGiftView == null) {

// 判斷禮物列表是否已經有3個了,如果有那么刪除掉一個沒更新過的, 然后再添加新進來的禮物,始終保持只有3個

if (ll_gift_group.getChildCount() >= 3) {

// 獲取前2個元素的最后更新時間

View giftView01 = ll_gift_group.getChildAt(0);

ImageView iv_gift01 = giftView01.findViewById(R.id.iv_gift);

long lastTime1 = (long) iv_gift01.getTag();

View giftView02 = ll_gift_group.getChildAt(1);

ImageView iv_gift02 = giftView02.findViewById(R.id.iv_gift);

long lastTime2 = (long) iv_gift02.getTag();

if (lastTime1 > lastTime2) { // 如果第二個View顯示的時間比較長

removeGiftView(1);

} else { // 如果第一個View顯示的時間長

removeGiftView(0);

}

}

...

開啟定時清理禮物列表

禮物顯示超過一定時間,自動將禮物在禮物列表中移除:

/**

* 定時清理禮物列表信息

*/

private void clearTiming() {

Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

int childCount = ll_gift_group.getChildCount();

long nowTime = System.currentTimeMillis();

for (int i = 0; i < childCount; i++) {

View childView = ll_gift_group.getChildAt(i);

ImageView iv_gift = (ImageView) childView.findViewById(R.id.iv_gift);

long lastUpdateTime = (long) iv_gift.getTag();

// 更新超過3秒就刷新

if (nowTime - lastUpdateTime >= 3000) {

removeGiftView(i);

}

}

}

}, 0, 3000);

}

聊天實現

case R.id.tv_chat:// 聊天

tv_chat.setVisibility(View.GONE);

ll_inputparent.setVisibility(View.VISIBLE);

ll_inputparent.requestFocus(); // 獲取焦點

showKeyboard();

break;

case R.id.tv_send:// 發送消息

String chatMsg = et_chat.getText().toString();

if (!TextUtils.isEmpty(chatMsg)) {

messageData.add("小明: " + chatMsg);

et_chat.setText("");

messageAdapter.NotifyAdapter(messageData);

lv_message.setSelection(messageData.size());

}

hideKeyboard();

break;

/**

* 顯示軟鍵盤

*/

private void showKeyboard() {

InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

imm.showSoftInput(et_chat, InputMethodManager.SHOW_FORCED);

}

/**

* 隱藏軟鍵盤

*/

public void hideKeyboard() {

InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(et_chat.getWindowToken(), 0);

}

view.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (ll_inputparent.getVisibility() == View.VISIBLE) {

tv_chat.setVisibility(View.VISIBLE);

ll_inputparent.setVisibility(View.GONE);

hideKeyboard();

}

}

});

// 軟鍵盤監聽

SoftKeyBoardListener.setListener(getActivity(), new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {

@Override

public void keyBoardShow(int height) {/*軟鍵盤顯示:執行隱藏title動畫,并修改listview高度和裝載禮物容器的高度*/

// 輸入文字時的界面退出動畫

AnimatorSet animatorSetHide = new AnimatorSet();

ObjectAnimator leftOutAnim = ObjectAnimator.ofFloat(rl_num, "translationX", 0, -rl_num.getWidth());

ObjectAnimator topOutAnim = ObjectAnimator.ofFloat(ll_anchor, "translationY", 0, -ll_anchor.getHeight());

animatorSetHide.playTogether(leftOutAnim, topOutAnim);

animatorSetHide.setDuration(300);

animatorSetHide.start();

// 改變listview的高度

dynamicChangeListviewH(90);

dynamicChangeGiftParentH(true);

}

@Override

public void keyBoardHide(int height) {/*軟鍵盤隱藏:隱藏聊天輸入框并顯示聊天按鈕,執行顯示title動畫,并修改listview高度和裝載禮物容器的高度*/

tv_chat.setVisibility(View.VISIBLE);

ll_inputparent.setVisibility(View.GONE);

// 輸入文字時的界面進入時的動畫

AnimatorSet animatorSetShow = new AnimatorSet();

ObjectAnimator leftInAnim = ObjectAnimator.ofFloat(rl_num, "translationX", -rl_num.getWidth(), 0);

ObjectAnimator topInAnim = ObjectAnimator.ofFloat(ll_anchor, "translationY", -ll_anchor.getHeight(), 0);

animatorSetShow.playTogether(leftInAnim, topInAnim);

animatorSetShow.setDuration(300);

animatorSetShow.start();

// 改變listview的高度

dynamicChangeListviewH(150);

dynamicChangeGiftParentH(false);

}

});

/**

* 動態的修改listview的高度

*/

private void dynamicChangeListviewH(int heightPX) {

ViewGroup.LayoutParams layoutParams = lv_message.getLayoutParams();

layoutParams.height = DisplayUtil.dip2px(getActivity(), heightPX);

lv_message.setLayoutParams(layoutParams);

}

/**

* 動態修改禮物父布局的高度

*/

private void dynamicChangeGiftParentH(boolean showhide) {

if (showhide) {// 如果軟鍵盤顯示中

if (ll_gift_group.getChildCount() != 0) {

// 判斷是否有禮物顯示,如果有就修改父布局高度,如果沒有就不作任何操作

ViewGroup.LayoutParams layoutParams = ll_gift_group.getLayoutParams();

layoutParams.height = ll_gift_group.getChildAt(0).getHeight();

ll_gift_group.setLayoutParams(layoutParams);

}

} else {

// 如果軟鍵盤隱藏中

// 就將裝載禮物的容器的高度設置為包裹內容

ViewGroup.LayoutParams layoutParams = ll_gift_group.getLayoutParams();

layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;

ll_gift_group.setLayoutParams(layoutParams);

}

}

MagicTextView代碼

/**

* 該自定義view是用于顯示禮物數字的,加了些效果,內發光,陰影等

*/

public class MagicTextView extends TextView {

private ArrayList outerShadows;

private ArrayList innerShadows;

private WeakHashMap> canvasStore;

private Canvas tempCanvas;

private Bitmap tempBitmap;

private Drawable foregroundDrawable;

private float strokeWidth;

private Integer strokeColor;

private Join strokeJoin;

private float strokeMiter;

private int[] lockedCompoundPadding;

private boolean frozen = false;

public MagicTextView(Context context) {

super(context);

init(null);

}

public MagicTextView(Context context, AttributeSet attrs) {

super(context, attrs);

init(attrs);

}

public MagicTextView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init(attrs);

}

public void init(AttributeSet attrs) {

outerShadows = new ArrayList();

innerShadows = new ArrayList();

if (canvasStore == null) {

canvasStore = new WeakHashMap>();

}

if (attrs != null) {

TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MagicTextView);

String typefaceName = a.getString(R.styleable.MagicTextView_typeface);

if (typefaceName != null) {

Typeface tf = Typeface.createFromAsset(getContext().getAssets(), String.format("fonts/%s.ttf", typefaceName));

setTypeface(tf);

}

if (a.hasValue(R.styleable.MagicTextView_foreground)) {

Drawable foreground = a.getDrawable(R.styleable.MagicTextView_foreground);

if (foreground != null) {

this.setForegroundDrawable(foreground);

} else {

this.setTextColor(a.getColor(R.styleable.MagicTextView_foreground, 0xff000000));

}

}

if (a.hasValue(R.styleable.MagicTextView_innerShadowColor)) {

this.addInnerShadow(a.getFloat(R.styleable.MagicTextView_innerShadowRadius, 0),

a.getFloat(R.styleable.MagicTextView_innerShadowDx, 0),

a.getFloat(R.styleable.MagicTextView_innerShadowDy, 0),

a.getColor(R.styleable.MagicTextView_innerShadowColor, 0xff000000));

}

if (a.hasValue(R.styleable.MagicTextView_outerShadowColor)) {

this.addOuterShadow(a.getFloat(R.styleable.MagicTextView_outerShadowRadius, 0),

a.getFloat(R.styleable.MagicTextView_outerShadowDx, 0),

a.getFloat(R.styleable.MagicTextView_outerShadowDy, 0),

a.getColor(R.styleable.MagicTextView_outerShadowColor, 0xff000000));

}

if (a.hasValue(R.styleable.MagicTextView_strokeColor)) {

float strokeWidth = a.getFloat(R.styleable.MagicTextView_strokeWidth, 1);

int strokeColor = a.getColor(R.styleable.MagicTextView_strokeColor, 0xff000000);

float strokeMiter = a.getFloat(R.styleable.MagicTextView_strokeMiter, 10);

Join strokeJoin = null;

switch (a.getInt(R.styleable.MagicTextView_strokeJoinStyle, 0)) {

case (0):

strokeJoin = Join.MITER;

break;

case (1):

strokeJoin = Join.BEVEL;

break;

case (2):

strokeJoin = Join.ROUND;

break;

}

this.setStroke(strokeWidth, strokeColor, strokeJoin, strokeMiter);

}

}

}

public void setStroke(float width, int color, Join join, float miter) {

strokeWidth = width;

strokeColor = color;

strokeJoin = join;

strokeMiter = miter;

}

public void setStroke(float width, int color) {

setStroke(width, color, Join.MITER, 10);

}

public void addOuterShadow(float r, float dx, float dy, int color) {

if (r == 0) {

r = 0.0001f;

}

outerShadows.add(new Shadow(r, dx, dy, color));

}

public void addInnerShadow(float r, float dx, float dy, int color) {

if (r == 0) {

r = 0.0001f;

}

innerShadows.add(new Shadow(r, dx, dy, color));

}

public void clearInnerShadows() {

innerShadows.clear();

}

public void clearOuterShadows() {

outerShadows.clear();

}

public void setForegroundDrawable(Drawable d) {

this.foregroundDrawable = d;

}

public Drawable getForeground() {

return this.foregroundDrawable == null ? this.foregroundDrawable : new ColorDrawable(this.getCurrentTextColor());

}

@Override

public void onDraw(Canvas canvas) {

super.onDraw(canvas);

freeze();

Drawable restoreBackground = this.getBackground();

Drawable[] restoreDrawables = this.getCompoundDrawables();

int restoreColor = this.getCurrentTextColor();

this.setCompoundDrawables(null, null, null, null);

for (Shadow shadow : outerShadows) {

this.setShadowLayer(shadow.r, shadow.dx, shadow.dy, shadow.color);

super.onDraw(canvas);

}

this.setShadowLayer(0, 0, 0, 0);

this.setTextColor(restoreColor);

if (this.foregroundDrawable != null && this.foregroundDrawable instanceof BitmapDrawable) {

generateTempCanvas();

super.onDraw(tempCanvas);

Paint paint = ((BitmapDrawable) this.foregroundDrawable).getPaint();

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));

this.foregroundDrawable.setBounds(canvas.getClipBounds());

this.foregroundDrawable.draw(tempCanvas);

canvas.drawBitmap(tempBitmap, 0, 0, null);

tempCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

}

if (strokeColor != null) {

TextPaint paint = this.getPaint();

// paint.setTextAlign(Paint.Align.CENTER);

paint.setStyle(Style.STROKE);

paint.setStrokeJoin(strokeJoin);

paint.setStrokeMiter(strokeMiter);

this.setTextColor(strokeColor);

paint.setStrokeWidth(strokeWidth);

super.onDraw(canvas);

paint.setStyle(Style.FILL);

this.setTextColor(restoreColor);

}

if (innerShadows.size() > 0) {

generateTempCanvas();

TextPaint paint = this.getPaint();

for (Shadow shadow : innerShadows) {

this.setTextColor(shadow.color);

super.onDraw(tempCanvas);

this.setTextColor(0xFF000000);

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));

paint.setMaskFilter(new BlurMaskFilter(shadow.r, BlurMaskFilter.Blur.NORMAL));

tempCanvas.save();

tempCanvas.translate(shadow.dx, shadow.dy);

super.onDraw(tempCanvas);

tempCanvas.restore();

canvas.drawBitmap(tempBitmap, 0, 0, null);

tempCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

paint.setXfermode(null);

paint.setMaskFilter(null);

this.setTextColor(restoreColor);

this.setShadowLayer(0, 0, 0, 0);

}

}

if (restoreDrawables != null) {

this.setCompoundDrawablesWithIntrinsicBounds(restoreDrawables[0], restoreDrawables[1], restoreDrawables[2], restoreDrawables[3]);

}

this.setBackgroundDrawable(restoreBackground);

this.setTextColor(restoreColor);

unfreeze();

}

private void generateTempCanvas() {

String key = String.format("%dx%d", getWidth(), getHeight());

Pair stored = canvasStore.get(key);

if (stored != null) {

tempCanvas = stored.first;

tempBitmap = stored.second;

} else {

tempCanvas = new Canvas();

tempBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);

tempCanvas.setBitmap(tempBitmap);

canvasStore.put(key, new Pair(tempCanvas, tempBitmap));

}

}

public void freeze() {

lockedCompoundPadding = new int[]{

getCompoundPaddingLeft(),

getCompoundPaddingRight(),

getCompoundPaddingTop(),

getCompoundPaddingBottom()

};

frozen = true;

}

public void unfreeze() {

frozen = false;

}

@Override

public void requestLayout() {

if (!frozen) super.requestLayout();

}

@Override

public void postInvalidate() {

if (!frozen) super.postInvalidate();

}

@Override

public void postInvalidate(int left, int top, int right, int bottom) {

if (!frozen) super.postInvalidate(left, top, right, bottom);

}

@Override

public void invalidate() {

if (!frozen) super.invalidate();

}

@Override

public void invalidate(Rect rect) {

if (!frozen) super.invalidate(rect);

}

@Override

public void invalidate(int l, int t, int r, int b) {

if (!frozen) super.invalidate(l, t, r, b);

}

@Override

public int getCompoundPaddingLeft() {

return !frozen ? super.getCompoundPaddingLeft() : lockedCompoundPadding[0];

}

@Override

public int getCompoundPaddingRight() {

return !frozen ? super.getCompoundPaddingRight() : lockedCompoundPadding[1];

}

@Override

public int getCompoundPaddingTop() {

return !frozen ? super.getCompoundPaddingTop() : lockedCompoundPadding[2];

}

@Override

public int getCompoundPaddingBottom() {

return !frozen ? super.getCompoundPaddingBottom() : lockedCompoundPadding[3];

}

public static class Shadow {

float r;

float dx;

float dy;

int color;

public Shadow(float r, float dx, float dy, int color) {

this.r = r;

this.dx = dx;

this.dy = dy;

this.color = color;

}

}

}

總結

以上所述是小編給大家介紹的Android仿直播類app贈送禮物功能,希望對大家有所幫助!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的android动画送礼物,Android仿直播类app赠送礼物功能的全部內容,希望文章能夠幫你解決所遇到的問題。

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

视频国产一区二区三区 | 色婷婷综合在线 | 蜜臀av夜夜澡人人爽人人桃色 | 国产精品久久久久久吹潮天美传媒 | 狂野欧美激情性xxxx | 69av国产| 成人久久久久久久久久 | 午夜精品电影 | 高清不卡一区二区三区 | 五月婷婷色综合 | 丁香九月婷婷 | 欧美日韩xxxxx | 中文字幕美女免费在线 | 国产女人40精品一区毛片视频 | 欧美做受高潮 | 欧美韩国日本在线 | 99精品国产免费久久久久久下载 | 欧美国产日韩在线观看 | 国产一区视频在线 | 97夜夜澡人人爽人人免费 | 欧美日韩国产精品一区二区 | 人人草在线视频 | 国产在线成人 | 国产精品女同一区二区三区久久夜 | 2024国产精品视频 | 午夜精品久久久99热福利 | 五月天,com | 在线综合 亚洲 欧美在线视频 | 欧美一区二区三区特黄 | 国产偷v国产偷∨精品视频 在线草 | av 一区 二区 久久 | 国产 视频 久久 | 亚洲一区二区精品视频 | 99r国产精品| av电影在线观看完整版一区二区 | 日本中文不卡 | 亚洲精品视频在线观看网站 | 日韩精品一区二区久久 | 99国产成+人+综合+亚洲 欧美 | 欧美91精品国产自产 | 欧美激情综合五月 | 丁香电影小说免费视频观看 | 在线 成人 | 国产精品毛片久久久久久久久久99999999 | 特级黄色片免费看 | 久久精品国产一区二区三 | 99久久精品免费视频 | 国产黄色av影视 | 日韩免费视频网站 | 91福利国产在线观看 | 97超碰资源 | 国产精品美女 | 国产黄色成人 | 色综合久久综合 | 国外调教视频网站 | 在线观看aa| 在线免费观看黄色小说 | 99这里只有精品视频 | 成人一级电影在线观看 | 在线观看免费 | 日韩在线观看一区二区三区 | 亚洲精品视频在线观看视频 | 亚洲综合成人专区片 | 黄色av一区二区 | 国产高清中文字幕 | 韩国精品在线观看 | 久久久久国产精品午夜一区 | 九九免费精品视频在线观看 | 国产一区高清在线观看 | 91亚洲精品久久久蜜桃借种 | 欧美人人爱| 337p西西人体大胆瓣开下部 | 麻花豆传媒mv在线观看 | 国产97色在线 | 亚洲资源 | 香蕉在线观看视频 | 亚洲一级免费电影 | 欧美精品久久久久久久久免 | 天天色天天爱天天射综合 | 99久久精品免费视频 | 亚洲午夜av久久乱码 | 四川bbb搡bbb爽爽视频 | 国产精品一区在线观看 | 五月婷婷另类国产 | 色噜噜狠狠色综合中国 | 久久久久久久久影视 | 国产精品九九九九九九 | 日日摸日日 | 亚洲激情视频在线 | 在线观看中文字幕网站 | 亚洲国产中文在线观看 | 国产精品久久久久久吹潮天美传媒 | 91精品欧美一区二区三区 | 国产成人一区二区在线观看 | 天天干天天碰 | 99福利影院| 欧美最新大片在线看 | a视频免费在线观看 | 九色在线视频 | 最新日韩在线观看视频 | 久久精品999| 91自拍成人 | 婷婷综合电影 | 国产精品久久精品国产 | 成人欧美亚洲 | 天天操天天舔天天干 | 美女搞黄国产视频网站 | 国产精品午夜免费福利视频 | 成人在线视频免费观看 | 最新国产精品亚洲 | av黄色成人 | 国产精品99久久久久久有的能看 | 国产精品亚洲片夜色在线 | 五月天婷亚洲天综合网精品偷 | 国产18精品乱码免费看 | 日韩视频免费 | 日本精品一二区 | 日日操操操 | 国产传媒一区在线 | va视频在线观看 | 特级西西人体444是什么意思 | 天天干,天天草 | 久久超碰免费 | 五月婷婷视频在线观看 | 欧美粗又大 | 国产亚洲综合精品 | 超碰最新网址 | 中文字幕永久免费 | 成人在线一区二区 | 免费91在线观看 | 91看片淫黄大片一级在线观看 | 婷婷五月情 | 国模精品在线 | 久久高清片 | 久久99国产精品自在自在app | 深夜免费福利 | 免费av试看 | 最近高清中文在线字幕在线观看 | 成人资源在线观看 | 玖玖精品视频 | 国产品久精国精产拍 | 高清一区二区三区 | 国内精品久久久久久久久 | 亚洲二级片| 免费av大全 | 最近高清中文字幕 | 99久久精品国产免费看不卡 | 亚洲精品小视频在线观看 | 国产精品久久久久久久久久了 | 欧美动漫一区二区三区 | 国产精品久久一区二区三区不卡 | 黄色精品一区二区 | 日韩久久一区 | 视频二区在线视频 | 在线观看www视频 | 国产一性一爱一乱一交 | 免费视频一级片 | 国产成人久久精品77777综合 | 日本精品视频免费观看 | 日韩在线观看影院 | 免费在线观看91 | 国产精选视频 | 亚洲天堂精品视频 | 日韩精品久久中文字幕 | 日本黄色免费播放 | 天天摸夜夜添 | 中文字幕久久网 | 中文字幕在线视频一区二区三区 | 久草视频在线资源 | 欧美成人精品欧美一级乱 | 亚洲综合婷婷 | 国产精品区免费视频 | 极品国产91在线网站 | 波多野结衣电影久久 | 国产资源 | 超碰97国产精品人人cao | 久久1电影院 | 日韩色中色 | 国产精品欧美日韩在线观看 | 欧美日韩精品电影 | 91视频xxxx | av一级在线 | 精品成人a区在线观看 | 黄色大片av | 国产在线观看你懂的 | 一区二区视频在线播放 | 久久无码av一区二区三区电影网 | 国产亚洲aⅴaaaaaa毛片 | 日韩欧美69 | 日韩精品一区二区免费 | 日韩精品中文字幕在线不卡尤物 | adn—256中文在线观看 | 亚洲欧洲精品一区二区精品久久久 | www91在线观看 | 天堂va欧美va亚洲va老司机 | 国产成人免费 | 亚洲精品合集 | 西西444www| 欧美在线观看视频一区二区三区 | 国产.精品.日韩.另类.中文.在线.播放 | 美女黄网站视频免费 | 国产日产av | 国产精品女人久久久 | 99精品偷拍视频一区二区三区 | 国产在线探花 | 日韩中午字幕 | 婷婷六月中文字幕 | 在线观看视频福利 | 色多多污污在线观看 | 色综合天天狠狠 | 丁香花在线视频观看免费 | 99久久成人 | 在线观看视频一区二区三区 | 久久美女免费视频 | 国产视频精品久久 | 亚洲夜夜爽| 99婷婷 | 97超碰在线久草超碰在线观看 | 日日操天天操狠狠操 | 超碰人人乐| 天天射天天干天天 | 久久午夜网 | 国产视频网站在线观看 | 久久影院中文字幕 | 天天色天天色 | 超碰在线1 | 韩国精品视频在线观看 | 中文字幕在线网址 | 精品久久一 | 国产永久免费高清在线观看视频 | 婷色在线| 国产精品9999久久久久仙踪林 | 91在线免费视频观看 | 欧美aa级 | 日韩aa视频| 中文在线a在线 | 久久欧洲视频 | 久草在线免费色站 | 亚洲午夜精品久久久 | 精品久久久免费 | 四虎成人精品永久免费av | 一区二区视频电影在线观看 | 久久久九色精品国产一区二区三区 | 一区二区伦理 | 久久歪歪 | 国语久久| 91精品婷婷国产综合久久蝌蚪 | 成人a免费 | 97福利在线| 亚洲国产成人在线 | 国产精品伦一区二区三区视频 | 国产亚洲成人网 | 91麻豆精品国产91 | av在线电影网站 | 最新国产一区二区三区 | 中文字幕第一页在线 | 成年人在线免费看 | 波多野结衣最新 | 在线观看理论 | 久久久免费毛片 | 欧美最猛性xxxxx免费 | 久久刺激视频 | 九九视频免费观看视频精品 | 在线欧美中文字幕 | 美女国内精品自产拍在线播放 | 久久国产欧美日韩 | 日本视频久久久 | 最近免费在线观看 | 久久国内精品视频 | 婷婷色综 | 欧美日韩视频在线 | 中文字幕日韩av | 天天干,天天草 | 日韩mv欧美mv国产精品 | 在线之家免费在线观看电影 | 777xxx欧美| www.天天射| 99国产免费网址 | 福利视频一区二区 | 在线观看黄网站 | 国产精品美女久久久久久 | jizz欧美性9 国产一区高清在线观看 | 97自拍超碰 | 中文在线a√在线 | 欧美日韩在线精品一区二区 | 亚洲第一区在线播放 | 激情视频免费在线观看 | 国产黄色看片 | 久久综合中文字幕 | 国产免费久久 | 首页av在线| 黄色三级视频片 | 免费看黄的视频 | 国产一卡二卡四卡国 | av免费在线观 | 亚洲黄色免费 | 青青射 | 国产在线一线 | 国产精品成人一区二区 | 日日天天狠狠 | 亚洲精品高清视频在线观看 | 免费观看黄 | 激情喷水 | 国产高清第一页 | 亚洲成av| 亚洲激情视频在线 | 中文字幕4 | 9999毛片 | 日韩免费一区二区在线观看 | 爱爱av在线| 日韩在线观看一区二区 | 开心激情久久 | 免费观看国产精品视频 | 国产精品免费久久久 | 免费精品在线视频 | 亚洲精品午夜久久久久久久久久久 | 久久久久久福利 | 天天操天天干天天摸 | 五月婷婷黄色网 | 国产无套精品久久久久久 | 精品一二三四五区 | 日本高清免费中文字幕 | 亚洲男男gⅴgay双龙 | 伊人小视频 | 日韩在线免费不卡 | 97色在线| 在线观看黄污 | 韩国av永久免费 | 在线观看国产一区 | 夜夜干夜夜 | 免费精品在线观看 | 91丨九色丨国产在线 | 免费国产一区二区视频 | 国产成人精品一区二区三区福利 | 成人影片免费 | 一区二区欧美在线观看 | 国产精品情侣视频 | 国产精品剧情在线亚洲 | 色综合久久久久网 | 国产一级免费在线观看 | 亚洲成人黄色av | 国产一级在线看 | 国产精品专区在线观看 | 五月综合激情婷婷 | 中文字幕高清在线播放 | 女人18毛片a级毛片一区二区 | 探花视频在线观看+在线播放 | 免费色视频网站 | 免费看黄20分钟 | 国产一区二区三区免费在线 | 五月婷香蕉久色在线看 | 91麻豆文化传媒在线观看 | 菠萝菠萝在线精品视频 | 日韩免费电影 | 色网站中文字幕 | 免费观看av | 日韩区视频 | 二区三区在线观看 | 中文在线免费观看 | 久久99精品国产一区二区三区 | 91网站在线视频 | 毛片网站在线看 | 国产精品国产自产拍高清av | 色91在线视频 | 国产在线观看你懂的 | 免费在线观看国产精品 | 日韩精品中文字幕av | 久久不射电影院 | 国产乱对白刺激视频在线观看女王 | 人人澡人人爽欧一区 | 成年人免费观看国产 | 国产中文字幕在线观看 | 亚洲做受高潮欧美裸体 | 中文字幕免费中文 | 国产精品麻豆三级一区视频 | 日韩精品在线一区 | a在线观看免费视频 | 日韩精品一区二区三区免费观看视频 | 国产91aaa | 九九交易行官网 | 国产精品午夜免费福利视频 | 91精品国产乱码 | 国产免费黄色 | 91九色成人蝌蚪首页 | 手机av电影在线观看 | 日韩高清精品免费观看 | 人人要人人澡人人爽人人dvd | 亚洲精品美女久久久 | 91丨九色丨首页 | 国产传媒中文字幕 | 中文字幕在线观看第三页 | 激情五月婷婷综合网 | 成人三级网站在线观看 | 日韩中文字幕在线不卡 | avwww在线观看 | 久久久久综合网 | 久久久久女人精品毛片 | 久久99国产精品视频 | 9999在线 | 尤物97国产精品久久精品国产 | 国产精品中文字幕在线播放 | 成人网看片| 久久综合国产伦精品免费 | 热久久这里只有精品 | 欧美日韩一级久久久久久免费看 | 日韩免费高清 | 中国一级片视频 | 色是在线视频 | 国产一区二区高清视频 | 中文字幕日韩无 | 狠狠色丁香婷婷综合最新地址 | 精油按摩av | 免费情趣视频 | 国产乱老熟视频网88av | 久综合网 | 人人讲下载 | 日韩xxxxxxxxx| 亚洲精品99久久久久中文字幕 | 日韩免费中文 | 国产精品乱码在线 | 免费三级网 | 国产成人精品午夜在线播放 | 亚洲3级 | 国产一区在线免费 | 亚洲在线国产 | 婷婷丁香久久五月婷婷 | 亚洲高清在线视频 | 日韩欧美网址 | 91av影视 | 国产亚洲视频在线 | 五月婷婷影视 | 91av视频免费在线观看 | 国产在线欧美日韩 | 在线免费观看欧美日韩 | 狠狠狠色丁香婷婷综合久久五月 | 欧美贵妇性狂欢 | 欧美性猛片 | 精品成人a区在线观看 | 国产精品观看在线亚洲人成网 | 国产人成免费视频 | 欧美精品黑人性xxxx | 亚洲少妇影院 | 成人午夜电影免费在线观看 | 久久99精品一区二区三区三区 | 久久综合视频网 | 九九热免费在线观看 | 亚洲久在线 | 欧美精品乱码久久久久久 | 天天做天天爱天天综合网 | 视频一区二区视频 | 狠狠的日 | 国产黄大片在线观看 | 99久久99久国产黄毛片 | 最新av电影网址 | 99精品视频免费全部在线 | 国产精品99久久久久久有的能看 | 国内精品久久久久 | 香蕉成人在线视频 | 91免费视频网站在线观看 | 草久久影院 | 国产又粗又猛又色又黄视频 | 天天综合网天天综合色 | 一本一道久久a久久精品 | 韩日电影在线免费看 | 人人爽人人爽人人爽学生一级 | 丰满少妇在线 | 99视频这里有精品 | 最新av免费在线观看 | 成年人在线观看 | 久草久热 | 欧美性生活免费 | 97在线观看免费视频 | 99视频精品| 亚洲黄色在线观看 | av中文字幕免费在线观看 | 亚洲综合国产精品 | 丁香网五月天 | 超薄丝袜一二三区 | 亚洲视频在线观看网站 | 99热.com | 成人91视频| 日韩在线播放欧美字幕 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 91麻豆精品国产91久久久无限制版 | 麻豆视频在线观看免费 | 久草在线免费新视频 | 黄a在线 | 久久久国内精品 | 五月综合在线观看 | 久久在线免费观看 | 久久综合影音 | av高清一区二区三区 | 日本中文字幕网 | 国产免费区 | 国产精品va最新国产精品视频 | 超碰在线日韩 | 免费国产在线观看 | 亚洲精品91天天久久人人 | 在线日本看片免费人成视久网 | 91成人网在线 | 午夜精品久久久久久久久久久 | 免费一级片在线 | 国产精品毛片网 | 日韩在线观看av | 成人黄色电影在线播放 | 日韩专区在线播放 | 国产成人精品一区一区一区 | 人人舔人人爽 | av色影院 | 麻豆国产露脸在线观看 | 97超碰在线人人 | 99热这里有精品 | 97在线观看视频 | 久久久久黄色 | 亚洲成人av电影在线 | 91av视频免费在线观看 | 欧美人人| 国产精品毛片一区视频播 | 精品国产亚洲日本 | 午夜在线日韩 | 91av视频免费观看 | 国产精品岛国久久久久久久久红粉 | 91丨九色丨91啦蝌蚪老版 | 2024av | 免费高清看电视网站 | 91精选在线观看 | 玖草在线观看 | 国产伦理久久 | 久久图| 日本丶国产丶欧美色综合 | 在线观看视频国产一区 | 日韩精品一区二区三区第95 | 天天干人人 | 丰满少妇在线观看网站 | 久久国产三级 | 97国产超碰在线 | 亚州激情视频 | 在线天堂日本 | 久久久久久久电影 | 国产成人久久精品一区二区三区 | 国产免费高清 | 一级一片免费看 | 久久免费国产精品 | 美女网站色免费 | 日韩字幕 | 欧美一区二区在线免费观看 | 永久精品视频 | 91精品国产网站 | 69精品在线 | 欧美激情奇米色 | 久久久国产精品视频 | 国产精品黄 | 五月香婷| 中文字幕欧美日韩va免费视频 | 婷婷色中文 | 天天综合网 天天 | 免费成人在线视频网站 | 国产一级不卡视频 | 成人午夜电影在线 | 欧美中文字幕第一页 | 日韩在线不卡视频 | 亚洲精品毛片一级91精品 | 西西www4444大胆视频 | 色多多污污 | 免费色网站 | 国产美女在线免费观看 | 99久久精品国产一区二区三区 | 欧美日韩国产色综合一二三四 | 久久久久久久久久久久亚洲 | 国产在线资源 | 免费看一级特黄a大片 | 不卡在线一区 | www.xxxx欧美| 97av视频 | 992tv在线 | 91亚洲精品久久久蜜桃网站 | 成人毛片在线观看 | 日本久久中文 | 国产第一页在线播放 | av视屏在线 | av国产在线观看 | 91香蕉视频720p | 亚洲精品在线免费 | 婷婷在线网| 美女免费网视频 | 日韩r级在线 | 国产一区二区影院 | 成人av资源站 | av在线网站大全 | 国产一二区在线观看 | 婷婷视频在线播放 | 九九久久婷婷 | 国产精品theporn | 国产成人精品免高潮在线观看 | 色婷婷播放| 99精品国产高清在线观看 | 正在播放国产91 | 东方av免费在线观看 | 欧美综合国产 | 黄色免费大片 | 六月激情| 日日干影院| 国产高清一区二区 | 亚州中文av| 亚洲2019精品| 麻豆国产网站入口 | 在线免费中文字幕 | 99久久精品免费看国产免费软件 | 天天色宗合 | 亚洲婷婷丁香 | 最近中文字幕免费av | 国产精品入口传媒 | 91成年人网站 | 国产无区一区二区三麻豆 | 能在线看的av | 在线观看视频亚洲 | 婷婷丁香色 | 免费视频久久久 | 久久久人人爽 | 在线免费高清一区二区三区 | 亚洲免费在线观看视频 | 99国产精品一区二区 | 日韩xxx视频 | 国产亚洲精品成人av久久ww | 夜夜躁日日躁狠狠躁 | 欧美激情第八页 | 久久精品超碰 | 成人黄色大片在线免费观看 | 欧美特一级片 | av高清一区 | 国产一区高清在线观看 | 正在播放一区二区 | 欧美精品久久天天躁 | 国产精品一区二区三区在线 | 国产一二三四在线观看视频 | 欧美福利视频一区 | 亚洲一级国产 | 国产精品综合久久久 | 亚洲黄色av | 超碰官网 | 亚洲国产无 | 在线中文字幕网站 | 国产精品国产三级国产专区53 | 精品色999| 国产精品成人久久久久 | 日本丰满少妇免费一区 | www.99热精品 | 91日韩在线视频 | 伊人欧美| 天天要夜夜操 | 欧美日韩二区三区 | 日韩欧美综合精品 | 欧美一级片在线免费观看 | 日韩av女优视频 | 九草在线观看 | wwwwww色| 97在线观看视频免费 | 亚洲精品一区二区精华 | www.69xx | 国产一二三精品 | 亚洲午夜精品久久久久久久久久久久 | 成人av影视观看 | 亚洲一区二区三区毛片 | 91精品国自产在线偷拍蜜桃 | 国产三级国产精品国产专区50 | 日韩h在线观看 | 日日夜夜天天操 | 正在播放国产91 | 91视频高清免费 | 精品播放 | 新版资源中文在线观看 | 色婷婷影视| 精品免费视频123区 午夜久久成人 | 国产午夜视频在线观看 | 97超碰国产在线 | 久久精品国产一区二区电影 | 精品国模一区二区 | 在线看黄色av | 五月婷婷视频在线 | 成年人免费在线观看网站 | 久久久影视 | 亚洲国产日韩欧美在线 | 国产免费一区二区三区网站免费 | 午夜资源站 | 日韩精品无码一区二区三区 | 中文字幕乱码日本亚洲一区二区 | 亚洲男男gaygay无套同网址 | 麻花天美星空视频 | 亚洲激情校园春色 | 久久综合干 | 中文字幕在线国产 | 成年人视频免费在线播放 | 国产成人精品午夜在线播放 | 成人黄大片视频在线观看 | 手机在线黄色网址 | 成人毛片久久 | 成人蜜桃网| 怡红院成人在线 | 成人h动漫精品一区二 | 日韩网站在线看片你懂的 | 西西www4444大胆视频 | 欧美日韩免费视频 | 午夜精品一区二区三区在线 | 亚洲国产三级在线观看 | 2019久久精品| 欧美另类交人妖 | 免费高清在线观看成人 | 精品一区二区亚洲 | 手机av电影在线 | 成人久久久电影 | 久久精品国产精品亚洲 | 97超碰在线久草超碰在线观看 | 国产黄免费 | 狠狠操导航 | 91视视频在线直接观看在线看网页在线看 | 91在线超碰| 99精品国产在热久久 | 91精品亚洲影视在线观看 | 欧美一进一出抽搐大尺度视频 | 久久免费视频3 | 亚洲伊人色| 97精品伊人 | 亚洲天堂网在线播放 | 美女视频黄免费的 | 日韩免费看片 | 日韩一区二区三区在线看 | 99热国产在线观看 | 激情综合色图 | 欧美日性视频 | 91黄色影视 | 人人爽人人 | 精品亚洲免费视频 | 国产精品久久久久久久久搜平片 | 国产又粗又猛又黄又爽视频 | 狂野欧美激情性xxxx | 99一级片 | 中国老女人日b | 欧美日韩国产在线观看 | 最新日韩电影 | 久久伊人八月婷婷综合激情 | 天天爱天天射 | 日韩在线观看电影 | 亚洲成人av片 | 久爱精品在线 | 色狠狠婷婷 | ww视频在线观看 | 成人久久久久久久久久 | 亚洲一区视频免费观看 | 国产在线精品区 | 97超碰人人网 | av在线播放亚洲 | 黄色a大片| 日韩一区二区三区观看 | 97超碰精品| 99久久免费看 | 久久伊人精品一区二区三区 | 四虎成人精品在永久免费 | 久久精彩| 四虎在线免费视频 | 国产美腿白丝袜足在线av | 在线观看亚洲a | 亚洲精品国产精品国自产 | 九九欧美视频 | 香蕉视频在线观看免费 | 久久99视频免费 | 亚洲日本黄色 | 国产精品人成电影在线观看 | 精品亚洲欧美一区 | 国产成人亚洲精品自产在线 | 婷婷六月丁香激情 | 成人av影视在线 | 最新动作电影 | 可以免费观看的av片 | 一区二区 不卡 | 麻豆一级视频 | 天天操天天射天天操 | 夜夜嗨av色一区二区不卡 | 国产高清中文字幕 | 免费网站v | 黄色国产区 | 免费观看不卡av | 亚洲免费小视频 | 成人久久久精品国产乱码一区二区 | 欧美一区日韩一区 | 国产高清在线不卡 | 久久精品中文字幕免费mv | 久久精彩免费视频 | 免费久久网| 日狠狠| 国产一级片直播 | 最近免费中文视频 | 免费毛片aaaaaa| 久久久国产精品久久久 | 久久国产二区 | 日韩免费一级a毛片在线播放一级 | 日韩一二三在线 | 成人黄色中文字幕 | 激情综合网五月婷婷 | 免费日韩一区二区三区 | 色停停五月天 | 在线观看资源 | 91最新中文字幕 | 欧美一区二区三区特黄 | 91成人短视频在线观看 | 日韩av一区二区三区在线观看 | 国产精品麻豆果冻传媒在线播放 | 国产综合精品久久 | 91免费高清 | 亚洲黄色一级大片 | 91成人久久 | 一级片色播影院 | 亚洲视频在线观看网站 | 操夜夜操| 在线一级片 | 黄色a一级片| 婷婷色网址 | 日韩精选在线 | 国产少妇在线观看 | 在线观看成人av | 九九有精品 | 天天干天天在线 | 精品久久免费 | 国内综合精品午夜久久资源 | 久久人人97超碰国产公开结果 | 久久伦理电影网 | 2024国产精品视频 | 黄色www | 欧美精品三级 | 中文字幕在线字幕中文 | 天天干天天操天天搞 | 色偷偷av男人天堂 | 97超碰人人澡人人 | 日韩成人精品一区二区 | 黄色三级av | 中文字幕免费国产精品 | 区一区二在线 | 蜜臀av一区二区 | 日韩在线国产精品 | 亚洲天天干 | 国产精品一区二区免费在线观看 | 一级淫片在线观看 | 日本黄色免费播放 | 91av视频在线免费观看 | 日本精品一区二区三区在线观看 | 九九免费精品视频在线观看 | 91精品久久久久久综合乱菊 | 一区二区欧美激情 | 国产精品一区二区三区99 | 亚洲激情av | 国产精品黑丝在线观看 | 欧洲一区二区在线观看 | 97在线观看免费 | 久久国产午夜精品理论片最新版本 | 99免费精品视频 | 天天射天天干 | 成年人在线看视频 | 国产精品99蜜臀久久不卡二区 | 色www免费视频 | 激情自拍av | 99久久久成人国产精品 | 九色视频网站 | 综合色中色 | 伊人久久在线观看 | 久久免费一级片 | 成人h动漫在线看 | 日韩av免费一区二区 | 91精品国产亚洲 | 日韩免费三级 | 二区三区在线观看 | 国产亚洲精品久久久久久网站 | 日韩电影久久久 | 91精品国产欧美一区二区 | 国产精品久久久久毛片大屁完整版 | 国产又粗又猛又色又黄网站 | 久久久久久久av | 丁香亚洲| 激情网婷婷 | 福利视频在线看 | 亚洲午夜久久久久久久久电影网 | 国产精品麻豆一区二区三区 | 97超碰精品 | 久久久片| 国产艹b视频 | 国产一区不卡在线 | 精品在线视频一区二区三区 | 精品在线视频一区 | 国产区在线视频 | 亚洲专区在线视频 | 中文字幕资源网在线观看 | 在线观看麻豆av | 欧美日韩视频观看 | 亚洲成人黄色在线 | 日韩网站在线播放 | 亚洲午夜精 | 国产免费又爽又刺激在线观看 | 国产精品h在线观看 | 青青草华人在线视频 | 久久久九九 | 久久五月婷婷丁香 | 国产成人精品一区二区三区免费 | av天天澡天天爽天天av | 毛片视频网址 | 天天操天天操天天操天天操天天操天天操 | 久久99亚洲精品久久 | 91麻豆精品国产91久久久久久 | 国产欧美精品一区二区三区 | 五月婷婷在线视频观看 | 中文字幕在线观看日本 | 久久人91精品久久久久久不卡 | 免费日韩 精品中文字幕视频在线 | 91在线视频在线观看 | www国产一区 | 日韩欧美69| 99色在线观看 | 久久久五月天 | 亚洲乱码久久 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲黄色大片 | 免费精品人在线二线三线 | 亚洲成人精品av | www.激情五月.com| 黄色app网站在线观看 | 国产精品嫩草影院99网站 | 久久国产电影 | 久久久人| 久久精品欧美日韩精品 | 999久久久 | 亚洲区另类春色综合小说校园片 | 开心激情五月网 | 国产成人99久久亚洲综合精品 | 国产黄色av | 国际精品久久久久 | 欧美日韩一区二区视频在线观看 | 高清精品视频 | 成人av电影免费在线播放 | 欧美精品视 | 国产美女精品视频免费观看 | 91福利影院在线观看 | 国产视频精品久久 | 狠狠操狠狠干2017 | 成人cosplay福利网站 | 欧美激情视频一区二区三区免费 | 色偷偷人人澡久久超碰69 | 亚洲人av免费网站 | 中文字幕黄色 | 久久成人18免费网站 | 亚洲无吗av | 日韩精品一区二区三区中文字幕 | 欧美日韩一区二区在线观看 | 久久精品中文字幕少妇 | 在线观看视频h | 麻豆影视网站 | 国产剧情在线一区 | 日本三级人妇 | 天堂网av在线| 亚洲欧洲一级 | 国产专区免费 | 亚洲一区二区视频在线 | 日韩在线观看你懂的 | 久草精品在线观看 | 天天综合天天做天天综合 | 激情五月色播五月 | 免费看片黄色 | 一区在线免费观看 | 99爱视频| 精品福利视频在线观看 | 91人人网 | 婷婷中文字幕 | 在线看岛国av| 久操视频在线播放 | 欧美精品做受xxx性少妇 | 成人国产一区二区 | 国产日韩欧美在线看 | www.亚洲精品| 韩国一区二区三区视频 | 国产黄色精品网站 | 国产精品va在线播放 | 天天射综合网视频 | 亚洲涩涩涩涩涩涩 | 国产精品久久电影观看 | 三级在线视频观看 | 在线播放视频一区 | 97精品国产aⅴ | 黄色一级大片在线观看 | 视频国产在线 | 久久国产精品一区二区三区 | 在线观看自拍 | 天天干中文字幕 | 国产正在播放 | 久久老司机精品视频 | 国产探花在线看 | 中文字幕视频观看 | 99中文在线 | 国产99视频在线观看 | 久草在线观看视频免费 | 99久久99久国产黄毛片 | 色婷婷激情四射 | 色婷婷 亚洲 |