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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android实例——拼图游戏

發布時間:2024/1/18 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实例——拼图游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

拼圖游戲

  • 項目簡介
  • 權限
  • adapter
    • PictureListAdapter
    • PuzzleAdapter
  • bean
    • ItemBean
  • Presenter
    • IPuzzlePresenter
    • PuzzlePresenterImpl
  • ui
    • IGameCallback
  • utils
    • Constant
    • ImagesUtils
    • ScreenUtils
  • View
    • MainActivity
    • PuzzleActivity
  • 布局
    • activity_main.xml
    • activity_puzzle.xml

項目簡介

選擇圖片,生成拼圖,通過移動拼圖還原圖片通關游戲,選擇界面如下

游戲界面如下

采用MVP架構,項目結構如下

權限

需要讀取相冊中的圖片

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

adapter

PictureListAdapter

public class PictureListAdapter extends BaseAdapter {private Context mContext;private List<Bitmap> mBitmapList;public PictureListAdapter(Context context, List<Bitmap> bitmapList) {mContext = context;mBitmapList = bitmapList;}@Overridepublic int getCount() {return mBitmapList.size();}@Overridepublic Object getItem(int position) {return mBitmapList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView item = new ImageView(mContext);item.setImageBitmap(mBitmapList.get(position));return item;} }

PuzzleAdapter

public class PuzzleAdapter extends BaseAdapter {private List<ItemBean> mItemBeanList;public PuzzleAdapter() {mItemBeanList = new ArrayList<>();}public void setData(List<ItemBean> itemBeanList) {mItemBeanList.clear();for (ItemBean itemBean : itemBeanList) {try {mItemBeanList.add((ItemBean) itemBean.clone());} catch (CloneNotSupportedException e) {e.printStackTrace();}}}@Overridepublic int getCount() {return mItemBeanList.size();}@Overridepublic Object getItem(int position) {return mItemBeanList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView item = new ImageView(parent.getContext());/*item.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.MATCH_PARENT, GridView.LayoutParams.MATCH_PARENT));item.setScaleType(ImageView.ScaleType.FIT_XY);*/item.setImageBitmap(mItemBeanList.get(position).getBitmap());return item;} }

bean

ItemBean

public class ItemBean implements Cloneable {private int mOriID; //表示拼圖原始順序private int mPuzzleID; //表示拼圖打亂后的順序private Bitmap mBitmap;public ItemBean() {}public ItemBean(int oriID, int puzzleID, Bitmap bitmap) {mOriID = oriID;mPuzzleID = puzzleID;mBitmap = bitmap;}public int getOriID() {return mOriID;}public void setOriID(int oriID) {mOriID = oriID;}public int getPuzzleID() {return mPuzzleID;}public void setPuzzleID(int puzzleID) {mPuzzleID = puzzleID;}public Bitmap getBitmap() {return mBitmap;}public void setBitmap(Bitmap bitmap) {mBitmap = bitmap;}@Overridepublic String toString() {return "ItemBean{" +"mOriID=" + mOriID +", mPuzzleID=" + mPuzzleID +", mBitmap=" + mBitmap +'}';}@NonNull@Overridepublic Object clone() throws CloneNotSupportedException {return super.clone();} }

Presenter

IPuzzlePresenter

public interface IPuzzlePresenter {enum STATE {SUCCESS, FAILED_STEP, FAILED_TIME}void registerGameCallback(IGameCallback gameControl);void unRegisterGameCallback();//生成拼圖數據void loadPuzzleData(Context context, Bitmap oriBitmap);//復位拼圖void resetGame();//交換拼圖void swapPuzzle(int position);//生成新的游戲void restartGame();}

PuzzlePresenterImpl

public class PuzzlePresenterImpl implements IPuzzlePresenter {private static final String TAG = "PuzzlePresenterImpl";private IGameCallback mCallback;private ItemBean mLastBitmap;private Bitmap mOriBitmap;private List<ItemBean> mPuzzleList;private List<ItemBean> mResetList;private int mType;private Map<Integer, Integer> mCountDownMap;private Map<Integer, Integer> mStepCountMap;private int mCurrentStep;private int mCurrentTime;private Timer mTimer;private TimerTask mTimerTask;public PuzzlePresenterImpl(int type) {mPuzzleList = new ArrayList<>();mResetList = new ArrayList<>();mType = type;mCountDownMap = new HashMap<>();mCountDownMap.put(2, 180);mCountDownMap.put(3, 300);mCountDownMap.put(4, 600);mStepCountMap = new HashMap<>();mStepCountMap.put(2, 10);mStepCountMap.put(3, 150);mStepCountMap.put(4, 500);}@Overridepublic void registerGameCallback(IGameCallback callback) {this.mCallback = callback;}@Overridepublic void unRegisterGameCallback() {mTimer.cancel();/*mPuzzleList.clear();mResetList.clear();*/this.mCallback = null;}@Overridepublic void loadPuzzleData(Context context, Bitmap oriBitmap) {Log.d(TAG, "loadPuzzleData: ");initPuzzle(context, oriBitmap);startGame();}private void startGame() {shufflePuzzle();cloneItemBeanList(mPuzzleList, mResetList);initCountDown();if (mCallback != null) {mCallback.onLoadPuzzleData(mOriBitmap, mPuzzleList);}startCountDown();}private void cloneItemBeanList(List<ItemBean> from, List<ItemBean> to) {if (to != null && to.size() != 0) {to.clear();}for (ItemBean itemBean : from) {try {to.add((ItemBean) itemBean.clone());} catch (CloneNotSupportedException e) {e.printStackTrace();}}}private void initCountDown() {mCurrentTime = mCountDownMap.get(mType);mCurrentStep = mStepCountMap.get(mType);}private void initPuzzle(Context context, Bitmap oriBitmap) {mOriBitmap = ImagesUtils.resizeBitmap(oriBitmap, ScreenUtils.getScreenWidthPixels(context), ScreenUtils.getScreenWidthPixels(context));int itemWidth = mOriBitmap.getWidth() / mType;int itemHeight = mOriBitmap.getHeight() / mType;for (int i = 1; i <= mType; i++) {for (int j = 1; j <= mType; j++) {Bitmap bitmap = Bitmap.createBitmap(mOriBitmap,(j - 1) * itemWidth,(i - 1) * itemHeight,itemWidth,itemHeight);mPuzzleList.add(new ItemBean((i - 1) * mType + j, (i - 1) * mType + j, bitmap));}}//取出最后一個圖片,當拼圖完成時補充mLastBitmap = mPuzzleList.remove(mType * mType - 1);//將空的圖片插入到最后mPuzzleList.add(new ItemBean(mType * mType, 0,ImagesUtils.createBitmap(mOriBitmap.getWidth() / mType,mOriBitmap.getHeight() / mType,"空白格")));}private void startCountDown() {mTimer = new Timer(true);mTimerTask = new TimerTask() {@Overridepublic void run() {Log.d(TAG, "run: Thread = " + Thread.currentThread().getId() + ", mCurrentTime = " + mCurrentTime);mCurrentTime--;if (mCallback != null) {mCallback.onCountDown(mCurrentTime, mCurrentStep);if (mCurrentTime == 0) {finishGame(STATE.FAILED_TIME);}}}};mTimer.schedule(mTimerTask, 0, 1000);}@Overridepublic void resetGame() {for (ItemBean itemBean : mPuzzleList) {Log.d(TAG, "resetGame: mPuzzleList = " + itemBean);}for (ItemBean itemBean : mResetList) {Log.d(TAG, "resetGame: mResetList = " + itemBean);}Log.d(TAG, "resetGame: --------------");cloneItemBeanList(mResetList, mPuzzleList);initCountDown();if (mCallback != null) {mCallback.onResetGame(mPuzzleList);}for (ItemBean itemBean : mPuzzleList) {Log.d(TAG, "resetGame: mPuzzleList = " + itemBean);}for (ItemBean itemBean : mResetList) {Log.d(TAG, "resetGame: mResetList = " + itemBean);}Log.d(TAG, "resetGame: --------------");}@Overridepublic void swapPuzzle(int position) {if (mCallback != null) {mCallback.onSwapPuzzle(isMovable(position), mPuzzleList);mCurrentStep--;mCallback.onCountDown(mCurrentTime, mCurrentStep);if (isSuccess()) {finishGame(STATE.SUCCESS);} else if (mCurrentStep == 0) {finishGame(STATE.FAILED_STEP);}}}private void finishGame(STATE state) {if (mTimer != null) {mTimer.cancel();mTimer = null;mTimerTask = null;}mCallback.onFinishGame(state);}@Overridepublic void restartGame() {startGame();}private ItemBean getBlankBitmap() {for (ItemBean itemBean : mPuzzleList) {if (itemBean.getPuzzleID() == 0) {return itemBean;}}return null;}private boolean isMovable(int position) {int blankPosition = getBlankBitmap().getOriID() - 1;if ((Math.abs(blankPosition - position) == mType //判斷上下|| ((blankPosition / mType == position / mType) && Math.abs(blankPosition - position) == 1))) { //判斷左右swapItem(mPuzzleList.get(position), getBlankBitmap());return true;}return false;}private void swapItem(ItemBean from, ItemBean blankBitmap) {if (from == blankBitmap) {return;}ItemBean temp = new ItemBean();temp.setPuzzleID(from.getPuzzleID());temp.setBitmap(from.getBitmap());from.setPuzzleID(blankBitmap.getPuzzleID());from.setBitmap(blankBitmap.getBitmap());blankBitmap.setPuzzleID(temp.getPuzzleID());blankBitmap.setBitmap(temp.getBitmap());}private boolean isSuccess() {boolean isSuccess = true;for (ItemBean bean : mPuzzleList) {if (bean.getPuzzleID() != 0 && bean.getOriID() == bean.getPuzzleID()) { //非空白格,兩個ID相等continue;} else if (bean.getPuzzleID() == 0 && bean.getOriID() == mType * mType) { //空白格,源ID等于最后一個continue;} else {isSuccess = false;}}return isSuccess;}private void shufflePuzzle() {for (int i = 0; i < mPuzzleList.size(); i++) { //打亂順序int index = (int) (Math.random() * mPuzzleList.size());swapItem(mPuzzleList.get(index), getBlankBitmap());}List<Integer> data = new ArrayList<>();for (int i = 0; i < mPuzzleList.size(); i++) {data.add(mPuzzleList.get(i).getPuzzleID());}if (!canSolve(data, getBlankBitmap().getOriID()) || isSuccess()) {shufflePuzzle();}}private boolean canSolve(List<Integer> data, int blankPosition) {// 個數為奇數時,倒置和為偶數才有解if (data.size() % 2 == 1) {return getInversions(data) % 2 == 0;} else { //個數為偶數時if (((blankPosition - 1) / mType) % 2 == 1) { //空格位于奇數行,倒置和為偶數才有解return getInversions(data) % 2 == 0;} else { //空格位于偶數行,倒置和為奇數才有解return getInversions(data) % 2 == 1;}}}//計算比第i位元素小的元素個數的總和,如[3,2,1],倒置和為[2,1,0] = 3private int getInversions(List<Integer> data) {int inversions = 0;int inversionCount = 0;for (int i = 0; i < data.size(); i++) {for (int j = i + 1; j < data.size(); j++) {int index = data.get(i);if (data.get(j) != 0 && data.get(j) < index)inversionCount++;}inversions += inversionCount;inversionCount = 0;}return inversions;} }

ui

IGameCallback

public interface IGameCallback {//獲取拼圖數據void onLoadPuzzleData(Bitmap resizeOriBitmap, List<ItemBean> itemBeanList);//交換拼圖void onSwapPuzzle(boolean isMovable, List<ItemBean> itemBeanList);//倒計時void onCountDown(int time, int step);//結束游戲void onFinishGame(IPuzzlePresenter.STATE state);//復位游戲void onResetGame(List<ItemBean> itemBeanList); }

utils

Constant

public class Constant {public static final String ORIGINAL_BITMAP = "Original_Bitmap";public static final String PUZZLE_TYPE = "puzzle_type"; }

ImagesUtils

public class ImagesUtils {//生成帶文字的圖片public static Bitmap createBitmap(int bitmapWidth, int bitmapHeight, String text) {Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);canvas.drawColor(Color.GRAY);if (!TextUtils.isEmpty(text)) {Paint textPaint = new Paint();textPaint.setColor(Color.BLACK);textPaint.setTextSize(bitmapWidth / text.length());float textWidth = textPaint.measureText(text, 0, text.length()); //用于水平居中Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();float offset = (fontMetrics.bottom - fontMetrics.top) / 2 - fontMetrics.bottom; //用于垂直居中canvas.drawText(text, (bitmapWidth - textWidth) / 2f, bitmapWidth / 2f + offset, textPaint);}return bitmap;}//修改圖片大小public static Bitmap resizeBitmap(Bitmap bitmap, float newWidth, float newHeight) {Matrix matrix = new Matrix();matrix.postScale(newWidth / bitmap.getWidth(), newHeight / bitmap.getHeight());return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);} }

ScreenUtils

public class ScreenUtils {public static DisplayMetrics getDisplayMetrics(Context context) {DisplayMetrics metrics = new DisplayMetrics();WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = windowManager.getDefaultDisplay();display.getMetrics(metrics);return metrics;}public static int getScreenWidthPixels(Context context) {return getDisplayMetrics(context).widthPixels;}public static int getScreenHeightPixels(Context context) {return getDisplayMetrics(context).heightPixels;} }

View

MainActivity

public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";private TextView mTypeSelector;private GridView mPicSelector;private static final int RESULT_IMAGE = 100;private static final int RESULT_CAMERA = 200;private int mCurrentType = 2;private String[] mPicStrings = new String[]{"趙", "錢", "孫", "李","周", "吳", "鄭", "王","馮", "陳", "褚", "衛","蔣", "沈", "韓", "選擇圖片"};private int mPicListColumns = (int) Math.sqrt(mPicStrings.length);private String mCameraTempPath;private List<Bitmap> mPicList;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initData();initListener();}private void initListener() {mTypeSelector.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mCurrentType == 4) {mCurrentType = 2;} else {mCurrentType++;}mTypeSelector.setText(mCurrentType + " × " + mCurrentType);}});mPicSelector.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {if (position == mPicStrings.length - 1) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setItems(new String[]{"從相冊選擇", "拍攝"}, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Log.d(TAG, "onClick: which = " + which);if (which == 0) {Intent intent = new Intent(Intent.ACTION_PICK, null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");startActivityForResult(intent, RESULT_IMAGE);} else {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);Uri photoUri = Uri.fromFile(new File(mCameraTempPath));intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);startActivityForResult(intent, RESULT_CAMERA);}}});builder.show();} else {PuzzleActivity.startPuzzleActivity(MainActivity.this, mPicList.get(position), mCurrentType);}}});}private void initView() {mTypeSelector = findViewById(R.id.tv_type_selector);mPicSelector = findViewById(R.id.gv_pic_list);}private void initData() {mCameraTempPath = getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/temp.png";Log.d(TAG, "onClick: mImagePath = " + mCameraTempPath);//解決上面路徑報錯問題StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();StrictMode.setVmPolicy(builder.build());builder.detectFileUriExposure();mPicSelector.setNumColumns(mPicListColumns);mPicList = new ArrayList<>();for (String string : mPicStrings) {mPicList.add(ImagesUtils.createBitmap(ScreenUtils.getScreenWidthPixels(this) / mPicListColumns,ScreenUtils.getScreenWidthPixels(this) / mPicListColumns,string));}mPicSelector.setAdapter(new PictureListAdapter(this, mPicList));}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);Log.d(TAG, "onActivityResult: resultCode = " + resultCode);if (resultCode == RESULT_OK) {Bitmap oriBitmap = null;InputStream inputStream = null;Log.d(TAG, "onActivityResult: requestCode = " + requestCode);if (requestCode == RESULT_IMAGE && data != null) {try {inputStream = getContentResolver().openInputStream(data.getData());} catch (FileNotFoundException e) {e.printStackTrace();}} else if (requestCode == RESULT_CAMERA) {try {inputStream = new FileInputStream(mCameraTempPath);} catch (FileNotFoundException e) {e.printStackTrace();}}BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;options.inSampleSize = 4; //圖片太大,縮放到1/4options.inJustDecodeBounds = false;oriBitmap = BitmapFactory.decodeStream(inputStream, null, options);Log.d(TAG, "onActivityResult: oriBitmap = " + oriBitmap);PuzzleActivity.startPuzzleActivity(MainActivity.this, oriBitmap, mCurrentType);}} }

PuzzleActivity

public class PuzzleActivity extends AppCompatActivity implements View.OnClickListener, IGameCallback {private static final String TAG = "PuzzleActivity";private TextView mStep;private TextView mCountDown;private GridView mPuzzleGv;private ImageView mOriPic;private Button mShowPicBtn;private Button mResetBtn;private Button mBackBtn;private PuzzleAdapter mPuzzleAdapter;private IPuzzlePresenter mPuzzlePresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_puzzle);initView();initData();initListener();}private void initView() {mStep = findViewById(R.id.tv_step_count);mCountDown = findViewById(R.id.tv_countdown);mPuzzleGv = findViewById(R.id.gv_puzzle);mOriPic = findViewById(R.id.iv_ori_pic);mShowPicBtn = findViewById(R.id.btn_ori_pic);mResetBtn = findViewById(R.id.btn_reset);mBackBtn = findViewById(R.id.btn_back);}public static void startPuzzleActivity(Context context, Bitmap oriBitmap, int type) {Intent intent = new Intent(context, PuzzleActivity.class);intent.putExtra(Constant.ORIGINAL_BITMAP, oriBitmap);intent.putExtra(Constant.PUZZLE_TYPE, type);context.startActivity(intent);}private void initData() {Intent intent = getIntent();Bitmap oriBitmap = intent.getParcelableExtra(Constant.ORIGINAL_BITMAP);int type = intent.getIntExtra(Constant.PUZZLE_TYPE, 2);mPuzzleGv.setNumColumns(type);mPuzzlePresenter = new PuzzlePresenterImpl(type);mPuzzlePresenter.registerGameCallback(this);mPuzzlePresenter.loadPuzzleData(this, oriBitmap);/* print log start */Log.d(TAG, "initData: oriBitmap = " + oriBitmap);Log.d(TAG, "initData: type = " + type);/* print log end */}private void showFinishDialog(String msg) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setMessage(msg);builder.setCancelable(false);builder.setNegativeButton("再來一次", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mPuzzlePresenter.restartGame();dialog.dismiss();}});builder.setPositiveButton("重選圖片", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();finish();}});builder.show();}private void initListener() {mShowPicBtn.setOnClickListener(this);mResetBtn.setOnClickListener(this);mBackBtn.setOnClickListener(this);mPuzzleGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Log.d(TAG, "onItemClick: position = " + position);mPuzzlePresenter.swapPuzzle(position);}});}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_ori_pic:Log.d(TAG, "onClick: btn_ori_pic");if (mOriPic.getVisibility() == View.INVISIBLE) {mPuzzleGv.setVisibility(View.INVISIBLE);mOriPic.setVisibility(View.VISIBLE);mShowPicBtn.setText("隱藏原圖");} else if (mOriPic.getVisibility() == View.VISIBLE) {mPuzzleGv.setVisibility(View.VISIBLE);mOriPic.setVisibility(View.INVISIBLE);mShowPicBtn.setText("顯示原圖");}break;case R.id.btn_reset:AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setMessage("是否將拼圖還原到最開始的狀態");builder.setCancelable(false);builder.setNegativeButton("還原", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mPuzzlePresenter.resetGame();}});builder.setPositiveButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.show();break;case R.id.btn_back:finish();break;}}@Overridepublic void onLoadPuzzleData(Bitmap resizeOriBitmap, List<ItemBean> itemBeanList) {mOriPic.setImageBitmap(resizeOriBitmap);updateUI(itemBeanList);}private void updateUI(List<ItemBean> itemBeanList) {if (mPuzzleAdapter == null) {mPuzzleAdapter = new PuzzleAdapter();mPuzzleAdapter.setData(itemBeanList);mPuzzleGv.setAdapter(mPuzzleAdapter);} else {mPuzzleAdapter.setData(itemBeanList);mPuzzleAdapter.notifyDataSetChanged();}}@Overridepublic void onSwapPuzzle(boolean isMovable, List<ItemBean> itemBeanList) {if (isMovable) {updateUI(itemBeanList);} else {Toast.makeText(this, "請點擊空白格附近的圖片進行交換", Toast.LENGTH_SHORT).show();}}@Overridepublic void onCountDown(int time, int step) {runOnUiThread(new Runnable() {@Overridepublic void run() {mCountDown.setText("剩余時間: " + time / 60 + "分" + time % 60 + "秒");mStep.setText("剩余步數: " + step);}});}@Overridepublic void onFinishGame(IPuzzlePresenter.STATE state) {switch (state) {case SUCCESS:showFinishDialog("拼圖成功");break;case FAILED_STEP:showFinishDialog("步數已用完");break;case FAILED_TIME:showFinishDialog("倒計時結束");break;}}@Overridepublic void onResetGame(List<ItemBean> itemBeanList) {updateUI(itemBeanList);}@Overrideprotected void onDestroy() {super.onDestroy();mPuzzlePresenter.unRegisterGameCallback();}}

布局

activity_main.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="match_parent"><LinearLayoutandroid:id="@+id/ll_type_container"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_margin="10dp"android:padding="3dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="選擇難度"android:textSize="30sp" /><TextViewandroid:id="@+id/tv_type_selector"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:background="#33000000"android:padding="3dp"android:text="2 × 2"android:textSize="25sp" /></LinearLayout><GridViewandroid:id="@+id/gv_pic_list"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/ll_type_container"android:horizontalSpacing="1dp"android:verticalSpacing="1dp" /> </RelativeLayout>

activity_puzzle.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".view.PuzzleActivity"><LinearLayoutandroid:id="@+id/ll_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"><TextViewandroid:id="@+id/tv_step_count"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="#33000000"android:padding="10dp"android:text="步數"android:textSize="25sp" /><TextViewandroid:id="@+id/tv_countdown"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="#33000000"android:padding="10dp"android:text="時間"android:textSize="25sp" /></LinearLayout><GridViewandroid:id="@+id/gv_puzzle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@id/ll_btns"android:layout_below="@id/ll_title"android:horizontalSpacing="2dp"android:verticalSpacing="2dp" /><ImageViewandroid:id="@+id/iv_ori_pic"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignTop="@id/gv_puzzle"android:visibility="invisible" /><LinearLayoutandroid:id="@+id/ll_btns"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:gravity="center"><Buttonandroid:id="@+id/btn_ori_pic"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="30dp"android:background="#33000000"android:text="顯示原圖"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_reset"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="30dp"android:background="#33000000"android:text="復位"android:textSize="30sp" /><Buttonandroid:id="@+id/btn_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="30dp"android:background="#33000000"android:text="返回"android:textSize="30sp" /></LinearLayout> </RelativeLayout>

總結

以上是生活随笔為你收集整理的Android实例——拼图游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲视频免费在线观看 | 香蕉影视app| 国产精品美女久久久久久久久 | 日韩av电影免费在线观看 | 免费观看日韩av | 91天堂素人约啪 | 摸阴视频 | 欧美日韩另类在线 | 9在线观看免费高清完整 | 国产一区在线不卡 | 三级性生活视频 | 国产精品免费不卡 | 在线视频精品播放 | 天天干天天插 | 欧美日韩免费观看一区二区三区 | 精品国产aⅴ一区二区三区 在线直播av | 成人av在线直播 | 国内精品免费久久影院 | 热久久这里只有精品 | 国产正在播放 | 91精品在线免费观看 | 在线视频婷婷 | 久久99这里只有精品 | 麻豆视频在线免费看 | 亚洲欧美在线观看视频 | 天天干天天拍天天操 | 欧美天天射 | 日本动漫做毛片一区二区 | 日韩一区二区免费视频 | av大全在线免费观看 | 久久伊人婷婷 | 国产亚洲亚洲 | 成 人 黄 色 片 在线播放 | 四虎成人在线 | 992tv又爽又黄的免费视频 | 成人黄色片在线播放 | 国产视频一区二区在线 | 久久精品婷婷 | av综合 日韩 | 欧美国产精品久久久久久免费 | 久久免费播放 | 欧美一级久久 | 一区二区三区手机在线观看 | 久久99婷婷 | 婷婷色在线观看 | 99精品视频免费观看视频 | 国产电影黄色av | av免费在线播放 | www.狠狠操 | 久久久精品久久 | 伊人天天综合 | www黄免费 | 国产91精品久久久久 | 丝袜制服综合网 | 成人在线观看影院 | 欧美视频一区二 | 国产伦理一区二区三区 | 天堂在线视频免费观看 | 精品国产一区二区在线 | 成人av在线观 | 免费福利视频导航 | 91人人澡人人爽人人精品 | 免费a网站| 国产精品白丝jk白祙 | 国产精品成人免费精品自在线观看 | 制服丝袜在线 | 日本精品va在线观看 | 又黄又爽的视频在线观看网站 | 99r在线观看| 日韩特级黄色片 | 午夜精品久久久久久久99热影院 | 2024国产精品视频 | 国产123区在线观看 国产精品麻豆91 | 国产裸体bbb视频 | 色播五月婷婷 | 综合精品久久久 | 亚洲最大av网 | 人人爽人人爽人人爽人人爽 | 久久久久久久久久免费 | 精品国产视频一区 | 97伊人网| 蜜桃视频在线观看一区 | 91麻豆视频 | 中文字幕黄色 | wwxxxx日本 | 成人一区二区三区在线观看 | 久久96国产精品久久99漫画 | 91精品一区二区在线观看 | 国产精品永久在线观看 | 91久久黄色 | 天天干,天天草 | 91在线视频免费 | 成人av资源 | 免费男女羞羞的视频网站中文字幕 | 五月婷婷久久丁香 | 91精品在线免费视频 | 国产精品一区二区av | 亚洲国产美女精品久久久久∴ | 亚洲五月六月 | 又色又爽又黄 | 日韩av一区在线观看 | 美女久久 | 日女人免费视频 | 在线免费观看黄色 | 日韩在线视频精品 | 99久久网站| 久久天天躁夜夜躁狠狠85麻豆 | 欧美激情亚洲综合 | 国产精品精品国产 | 国产免费xvideos视频入口 | 91免费观看| 欧美aa级 | 玖草影院| 天天爱综合 | 天天爱天天干天天爽 | 在线观看久久 | 国产中文字幕在线观看 | 免费国产在线视频 | 九九九九九九精品 | 久久久av免费 | 久久综合久久综合这里只有精品 | 久久av网| 欧美一级性生活 | 日韩理论电影在线 | 国产精品99久久久久久宅男 | 看国产黄色大片 | 狠狠色噜噜狠狠 | 亚洲日韩精品欧美一区二区 | 玖玖精品在线 | 久久一区国产 | 天天干天天操天天操 | 亚洲国产精品小视频 | 97av视频在线 | 色夜视频 | 欧美日韩性视频在线 | 91看片淫黄大片在线播放 | 婷婷网站天天婷婷网站 | 国产精品一区二区久久国产 | 天天插天天射 | 午夜久久福利影院 | 欧美在线日韩在线 | 成人免费视频播放 | 91资源在线观看 | 91香蕉视频| 在线观看成人 | 国产精品欧美久久久久三级 | 日韩在线观看中文字幕 | 999久久久免费精品国产 | 深爱激情婷婷网 | av888.com| 国产96精品 | 婷婷伊人五月天 | jizz18欧美18 | 国产一区二区三区 在线 | 在线观看国产高清视频 | 最新超碰在线 | 久久字幕精品一区 | 免费看av片网站 | 久久精品久久综合 | 成x99人av在线www | 亚洲精品国产精品乱码不99热 | 欧美老少交 | 免费在线播放av电影 | 二区三区在线 | 久热色超碰 | 午夜性生活 | 波多野结衣一区三区 | 欧美婷婷色 | 免费看精品久久片 | 在线视频观看国产 | 99久久精品国产一区二区三区 | 日日干,天天干 | 四虎成人精品永久免费av九九 | 天天看天天干天天操 | 国产精品18p | 久久久天堂 | 97人人爽 | www.com黄 | 国产 欧美 日本 | 中文在线a天堂 | 欧美视频www | 四虎在线观看 | 在线观看免费av网 | 亚洲视频综合在线 | 2024av| 午夜视频在线观看欧美 | 国产成人精品亚洲 | 国产欧美日韩一区 | 亚洲 欧洲av | 久久免费a | 中文字幕国产精品一区二区 | 国产资源站 | 狠狠色丁香婷婷综合久小说久 | 狠狠激情中文字幕 | 日韩爱爱网站 | 久久理论电影网 | 成片免费观看视频 | 激情丁香在线 | 欧美成亚洲| 六月丁香综合网 | 国产高清不卡一区二区三区 | 亚洲成aⅴ人在线观看 | 51久久夜色精品国产麻豆 | 国精产品999国精产品视频 | 91精品久久久久 | 国产视频一区二区三区在线 | 婷婷色5月| 欧美日韩国产在线精品 | 国产一级特黄毛片在线毛片 | 久久看片网| 午夜av剧场 | 亚洲精品无 | 国内成人精品2018免费看 | 国产精品原创在线 | 五月综合激情 | 久久国产精品久久精品 | 伊人五月 | 99久久精品免费看国产 | 欧美性色黄 | 欧美亚洲专区 | 国产精品色婷婷 | 久久久久久久av麻豆果冻 | 51久久成人国产精品麻豆 | 国产中文自拍 | 亚洲精品视频免费观看 | avwww在线| 日本最新一区二区三区 | a在线免费观看视频 | 欧洲激情综合 | 91丨九色丨国产在线 | 国产中文字幕视频在线观看 | 99久久精品免费一区 | 亚洲美女免费精品视频在线观看 | 性色在线视频 | 免费一级片在线 | av电影在线不卡 | 一二三久久久 | 久久精品在线视频 | 福利视频导航网址 | 国产精品一区二区电影 | 四川bbb搡bbb爽爽视频 | 日韩精品视频免费 | 在线观影网站 | 免费在线观看91 | 欧美久久久一区二区三区 | 91成人免费在线视频 | 免费看黄色小说的网站 | 亚洲国产电影在线观看 | 91精品伦理 | 激情综合网色播五月 | 911免费视频 | 在线视频1卡二卡三卡 | 国产中文字幕精品 | 午夜视频免费播放 | 国产麻豆剧传媒免费观看 | 五月天色综合 | 久久婷婷一区 | 色橹橹欧美在线观看视频高清 | 麻豆精品在线视频 | 亚洲精品欧美精品 | 国产精品 欧美 日韩 | 久久99免费 | 国产精品久久久一区二区三区网站 | 亚洲极色 | 91视频在线观看大全 | 亚洲九九爱 | 日韩精品专区在线影院重磅 | 日韩视频a| 久久久精品久久日韩一区综合 | 人人插人人搞 | 精品女同一区二区三区在线观看 | 国产高清不卡av | 欧美a级一区二区 | 99亚洲精品在线 | 91av短视频 | 日韩视频一区二区三区在线播放免费观看 | 久久久999精品视频 国产美女免费观看 | 99精品在线视频观看 | 国产精品日韩 | 欧美日韩亚洲在线观看 | 久久精品永久免费 | 国产精品女人久久久久久 | 免费视频三区 | 超碰在线亚洲 | 五月的婷婷 | 日韩在线观 | 久久国内精品 | 色人久久 | 欧美成年人在线观看 | 在线国产99 | 免费在线色 | 成人一级黄色片 | 欧美人牲| 亚洲成成品网站 | 国际av在线 | 亚洲资源网 | 日韩av片无码一区二区不卡电影 | 欧美久久99 | 中文字幕文字幕一区二区 | 国产精品 中文在线 | 免费观看视频的网站 | 国产精品美女久久久久久久网站 | 美女视频黄是免费的 | 欧美视屏一区二区 | 国产手机在线视频 | 人人网av| 成人精品福利 | a级国产乱理论片在线观看 伊人宗合网 | 国产日本亚洲 | 在线观看视频91 | 国产 日韩 欧美 在线 | 国产在线观看h | 视频1区2区| 久久精品国产一区二区三区 | 日韩在线理论 | 亚洲精品美女在线 | 美女免费视频网站 | 亚洲综合色网站 | 欧美精品久久久久久久久免 | 国产麻豆成人传媒免费观看 | 国产福利午夜 | 国产69久久久| 又黄又网站 | 日韩字幕在线 | 欧美日韩一区二区视频在线观看 | 国产精品一区二区三区视频免费 | 91久久精品日日躁夜夜躁国产 | 国产日韩欧美自拍 | 国产黄色片免费在线观看 | 久免费| 九九久久精品 | 丁香激情网 | 91豆麻精品91久久久久久 | 9999在线观看 | 91av手机在线 | 日韩色在线 | 97视频资源 | 国产一级免费av | 91污在线| 久久久亚洲网站 | 国产精品久久久久久超碰 | 黄色国产区 | 日韩亚洲国产精品 | 24小时日本在线www免费的 | 日韩精品一卡 | 蜜臀av网址| 免费看av片网站 | 精品v亚洲v欧美v高清v | av免费在线免费观看 | 碰超人人 | 日日夜夜婷婷 | 国产色视频123区 | 国产精品美女网站 | av久久久| 91精品视频在线观看免费 | 在线观看国产日韩欧美 | 亚洲精品a区 | 色a网| 色婷婷狠狠五月综合天色拍 | 奇米影音四色 | 手机看片久久 | 久久影院中文字幕 | 久久永久免费视频 | 96久久欧美麻豆网站 | 99精品在线观看视频 | 狠狠狠色狠狠色综合 | 国产精品乱码久久 | 伊人狠狠操 | 久久99精品国产91久久来源 | 综合天堂av久久久久久久 | 亚洲人片在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 久久久国产精品一区二区三区 | 国产精品原创视频 | 超碰伊人网| 国产在线观看你懂得 | 黄色小说免费在线观看 | 日韩在线电影 | 日韩在线中文字幕 | 久久久久久久久久久久久久免费看 | 狠狠色丁香久久婷婷综 | 亚洲精品国偷自产在线99热 | 香蕉久草 | 国产99久久九九精品免费 | 国产日韩欧美在线 | 日本久久久影视 | 国产精品久久久av | 97人人艹 | 成人国产一区 | 日本中文字幕电影在线免费观看 | av片在线看| 综合国产在线观看 | 中文字幕免费高清在线观看 | 久久久久欠精品国产毛片国产毛生 | 久久综合久久综合这里只有精品 | 久草精品网| 九九综合九九 | 国产91小视频 | 精品一区二区在线看 | 久草视频在线新免费 | 一区二区三区精品久久久 | 9i看片成人免费看片 | 日本精品中文字幕在线观看 | 日韩高清毛片 | 日韩成人免费在线电影 | 丁香婷婷激情国产高清秒播 | 亚洲国产精品推荐 | 久久国内精品99久久6app | 中文字幕一区二区三区四区久久 | 精品欧美在线视频 | 在线观看中文av | 2024国产精品视频 | 午夜精品电影一区二区在线 | 日韩欧美国产精品 | av片子在线观看 | 日韩一区二区三免费高清在线观看 | 国产自产高清不卡 | 欧美久久精品 | 99草在线视频 | 免费观看十分钟 | 国产精品一二 | 久久免费a| www.国产毛片 | 中文字幕一区二区三区在线视频 | 久久精美视频 | 国产免费作爱视频 | 91在线视频免费播放 | 精品久久一区二区三区 | 婷婷久操| 国产在线综合视频 | 日韩中文三级 | 91大神免费视频 | 亚洲精品高清一区二区三区四区 | 成人一级影视 | 国产在线国偷精品产拍 | 欧美日韩国产二区 | 免费成人黄色片 | 一区二区中文字幕在线播放 | 国产在线高清 | 日韩视频一二三区 | 在线观看久草 | 激情五月婷婷激情 | 久久久久久久久影院 | 黄色成年片 | 91精品在线免费 | 国产高清视频在线观看 | 中文字幕视频观看 | 精品欧美乱码久久久久久 | 亚洲高清资源 | 日韩1页| 欧美一区二区在线 | 亚洲精品久久在线 | 国产色网 | 亚洲精品国产精品国自产 | 国产视频美女 | 激情大尺度视频 | 久草青青在线观看 | 国产亚洲精品成人av久久ww | 超级碰碰碰碰 | 麻豆视屏 | 成人永久免费 | 香蕉97视频观看在线观看 | 色天天综合久久久久综合片 | 成人av在线影视 | 操操色| 亚洲国产精品久久久久婷婷884 | www.狠狠色 | 亚洲精品99久久久久久 | 欧美日韩首页 | 久久久污 | 亚洲精品视频在线观看视频 | 久久婷婷久久 | 免费婷婷 | 日日干美女 | 欧美日韩不卡一区二区 | 一区在线观看视频 | 婷婷色网站 | 久久综合狠狠狠色97 | 久久久精品 | 五月天色婷婷丁香 | 成人网444ppp | 久久久久久久久久久成人 | 久久91久久久久麻豆精品 | 国产成人免费观看久久久 | 色99导航| 国产成人在线免费观看 | 欧美va天堂va视频va在线 | 国产黄网站在线观看 | 日韩欧美中文 | 国产视频1 | 狠狠干婷婷 | 四虎成人免费观看 | 狠狠干天天操 | 欧美午夜精品久久久久久浪潮 | 欧美日韩一区二区久久 | 日韩精品影视 | 欧美黑吊大战白妞欧美 | 天天干人人插 | 午夜丰满寂寞少妇精品 | 国产一级电影免费观看 | 操操操人人人 | 人人超碰人人 | 日韩精品一区二区三区中文字幕 | 天天操综| 色国产精品 | 探花视频在线观看免费版 | 成年人免费av网站 | 国产日韩欧美在线 | 日韩a在线观看 | 国产精品国产三级国产aⅴ无密码 | 人人草人人草 | 久久精品视频免费观看 | 美女视频是黄的免费观看 | 在线播放视频一区 | 九九日韩 | 91最新视频在线观看 | 精品久久久久国产 | 麻豆91在线播放 | 久久精品视频日本 | 久久最新网址 | 这里只有精彩视频 | www久久99| 久草久草视频 | 精品99在线观看 | 亚洲丁香久久久 | 精品亚洲二区 | 国产免费不卡av | 国产91精品看黄网站 | 91免费版在线观看 | 久久久国产影院 | 亚洲一区二区三区在线看 | 亚洲精品mv在线观看 | 中文字幕的 | 国产精品久久久久永久免费看 | 午夜视频在线观看一区二区 | 国产精品久久久久久久久久久杏吧 | 天天干com| 成人午夜影院在线观看 | 日韩精品在线视频 | 国产成人av | 欧美va天堂在线电影 | 国产第一福利 | 欧美日韩国产一二 | 999久久久久久久久久久 | 国产成人综合精品 | 亚洲综合在线一区二区三区 | 伊人黄色网 | 久久国产电影院 | 日韩三级av | 在线观看不卡视频 | 夜夜躁日日躁狠狠久久88av | 亚洲精区二区三区四区麻豆 | 精品国产伦一区二区三区免费 | 美女很黄免费网站 | 在线视频你懂 | 国产精品欧美日韩 | 69视频在线 | 成年人国产精品 | 五月婷av| 三级在线视频观看 | 久久精品爱爱视频 | 国产又粗又猛又爽 | 一级性视频 | 久久高清片 | 久久99最新地址 | 婷婷丁香激情五月 | 午夜的福利 | 成人黄色国产 | 成人一级片在线观看 | 成人性生爱a∨ | 亚洲涩涩网站 | 91福利影院在线观看 | 99精品视频中文字幕 | 国产xvideos免费视频播放 | 午夜精品视频免费在线观看 | 久久激情婷婷 | 97视频在线观看视频免费视频 | 免费在线观看黄网站 | 国产高清免费在线观看 | 69视频永久免费观看 | 999精品在线| 免费观看的黄色 | 久久99亚洲精品久久久久 | 久久久久久久av | 国产一级视频免费看 | av久久久久久 | 精品国产欧美一区二区三区不卡 | 99久久精品久久久久久动态片 | 黄色精品一区二区 | 久久婷五月| 在线观看中文字幕第一页 | 欧美一区二区三区免费观看 | 久久精品香蕉 | 国产成人精品一区二区三区福利 | 亚洲欧美日韩精品久久久 | 国产69精品久久久久99 | 成人在线一区二区三区 | 国产日韩欧美在线观看 | 亚洲精品视频www | 91精选| 日韩av一区二区三区在线观看 | 99精品国产兔费观看久久99 | 99热在线网站 | 久草com | 国产精品久久一区二区无卡 | 国产亚洲综合性久久久影院 | 久久国产精品久久精品国产演员表 | 国产精品va | 狠狠操狠狠 | 天堂黄色片 | 激情视频亚洲 | 在线а√天堂中文官网 | 欧洲亚洲国产视频 | 91精品久久久久久久91蜜桃 | 三级小视频在线观看 | 久久99国产一区二区三区 | 欧美污污网站 | 日韩成人免费在线电影 | 五月天网站在线 | 99久久久久成人国产免费 | 亚洲成人免费观看 | 一区精品在线 | 在线视频你懂 | 免费婷婷 | 一级欧美一级日韩 | 欧美成年网站 | 亚洲精品免费在线观看视频 | 中国一级片免费看 | 白丝av免费观看 | 日韩中文字幕视频在线观看 | 成人影片在线免费观看 | 欧美日韩国产综合一区二区 | 久草国产在线 | 婷五月激情 | 一二区av| 中文字幕乱码电影 | 天堂网在线视频 | 天天碰天天操视频 | 天堂va在线高清一区 | 99r精品视频在线观看 | av动图 | 久久国产精品免费视频 | 韩国一区二区三区在线观看 | 亚洲欧美日韩一二三区 | 色婷婷激情电影 | 免费黄色网止 | 久久视频这里有久久精品视频11 | 日韩午夜视频在线观看 | 最新av电影网站 | 国产又粗又长又硬免费视频 | 九九九热 | 欧美一二三专区 | 黄色软件网站在线观看 | 99精品免费久久久久久久久日本 | 亚洲精品日韩av | 国产视频综合在线 | 日韩高清一区在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 日韩欧美专区 | 国产一区二区在线免费观看 | 日韩久久精品一区 | 狠狠狠狠狠狠天天爱 | 国产五月天婷婷 | 一区二区三区四区不卡 | 久久久www成人免费精品 | 亚洲v欧美v国产v在线观看 | 国产在线超碰 | 成人av动漫在线 | 欧美精品在线观看一区 | 97超碰在线久草超碰在线观看 | 国产精品不卡在线 | av丝袜在线 | 欧美极品在线播放 | 99性视频| a在线观看国产 | 欧美日韩中文字幕在线视频 | 国产精品一区在线观看你懂的 | 亚洲精品国产拍在线 | 国产成人在线精品 | 国产91av视频在线观看 | 欧美精品久久久久a | 91香蕉视频色版 | 国产精品一区二区av麻豆 | 天天操天天添天天吹 | 精品一区二区综合 | 182午夜在线观看 | 久久99精品久久久久久 | 国产精品夜夜夜一区二区三区尤 | 日韩欧美国产视频 | 少妇av网| 中文字幕在线成人 | 亚洲激情网站免费观看 | 精品国产欧美一区二区 | 国产精品久久久久久模特 | 超碰在线97免费 | 天天插天天干 | 91精品久久久久久久久 | 国产精品高清免费在线观看 | 日韩欧美视频免费观看 | 国产免费久久久久 | 日韩精品视频在线观看免费 | 成人免费视频视频在线观看 免费 | 国产精品久久久久久久午夜片 | 欧美a级免费视频 | 9999精品免费视频 | 99久久999久久久精玫瑰 | 7799av| 欧美日韩国产亚洲乱码字幕 | 91香蕉视频 mp4 | 九九九毛片 | 在线视频观看国产 | 人人干人人做 | 最新色站 | 久久免费福利视频 | 四虎影视成人精品国库在线观看 | 国产亚洲在线视频 | 日韩精品一区二区三区水蜜桃 | 久久精品免费 | 国产一二三精品 | 另类老妇性bbwbbw高清 | 99精品视频在线播放观看 | 久久久黄色免费网站 | 日本中文字幕影院 | 在线影视 一区 二区 三区 | 久久国产区 | 亚洲精品免费看 | 久草视频2 | 91在线精品秘密一区二区 | 国产精品观看在线亚洲人成网 | 夜夜操网 | 国产日韩视频在线播放 | 97手机电影网 | 91中文字幕在线播放 | 亚洲无人区小视频 | 91精品国产成 | 日韩精品视频免费专区在线播放 | 国产成人av电影在线观看 | 日韩在线视频网 | 二区视频在线 | 国产综合福利在线 | 天天爽人人爽 | 91视频在线观看大全 | 在线观看的av | 九色视频自拍 | 91桃色在线观看视频 | 久久国产91 | 天干啦夜天干天干在线线 | 久草青青在线观看 | 国产一区二区高清不卡 | 色偷偷网站视频 | 欧美日韩午夜在线 | 91九色视频 | 国产黄视频在线观看 | 综合国产在线观看 | 国产精品一区二区在线免费观看 | 欧美日韩视频观看 | 欧美激情视频一二三区 | 国产成人精品亚洲a | 九九九九热精品免费视频点播观看 | 玖玖爱国产在线 | 久久精品一区二区三 | 亚洲日本欧美在线 | 伊色综合久久之综合久久 | 在线国产一区二区 | 97久久久免费福利网址 | 免费av试看| 视频成人 | 在线色亚洲 | 99精彩视频在线观看免费 | 啪啪免费试看 | 天天射天天干天天 | 99国产一区二区三精品乱码 | 国内精品久久久久久久久 | 伊人欧美 | 国产一级a毛片视频爆浆 | 日韩女同一区二区三区在线观看 | 中文字幕在线人 | 国产黄色理论片 | 97视频免费在线观看 | 成人免费在线播放视频 | 亚洲另类xxxx | 看全黄大色黄大片 | 国产91对白在线播 | 久久天天躁狠狠躁夜夜不卡公司 | 免费在线中文字幕 | 91在线观看高清 | 久久久99精品免费观看 | 日韩激情小视频 | 狠狠狠色狠狠色综合 | 亚洲日本va午夜在线电影 | 美女一级毛片视频 | 免费av 在线 | 午夜精品99久久免费 | 91精品国产麻豆国产自产影视 | 亚洲经典中文字幕 | 日韩专区 在线 | 91黄色影视| 欧美一级视频免费看 | 国产精品乱码高清在线看 | 国产精品视频免费观看 | 中文超碰字幕 | 欧美色图一区 | 日日射av | 亚洲伊人网在线观看 | 99久久99久久精品 | 久草在线电影网 | 欧美国产不卡 | 中文av在线天堂 | 99r在线视频| 精品视频在线免费 | 欧美一级片免费观看 | 国产精品黑丝在线观看 | 狠狠干狠狠久久 | 久久精品免费观看 | 91久久久久久久一区二区 | 日本久久中文字幕 | 在线视频日韩精品 | 天天人人综合 | 国产在线观看高清视频 | 九九综合久久 | 国产精品美女999 | 久草在线免费看视频 | 高清不卡毛片 | 99久久毛片 | 91九色在线视频 | 婷婷综合网 | 天天操天天射天天插 | 91久久精品一区二区二区 | 激情五月综合网 | 激情网站免费观看 | 97日日碰人人模人人澡分享吧 | 欧美三级在线播放 | 奇米7777狠狠狠琪琪视频 | 天海翼一区二区三区免费 | 欧美国产精品一区二区 | 在线婷婷 | 亚洲小视频在线 | 91成人网页版 | 精品国产乱码久久久久久1区2匹 | 在线看黄色的网站 | 狠狠色丁香婷婷综合欧美 | 日韩精品视 | 亚洲无人区小视频 | 午夜精品久久久久久久99 | 欧美激情片在线观看 | 免费av高清 | 欧美日韩中文字幕在线视频 | 国产精品国产三级国产aⅴ无密码 | 国产在线欧美日韩 | 国产精品99久久久久久人免费 | 日韩视频免费观看高清完整版在线 | 国产成人av电影在线观看 | 国产精品久久久久久久久久妇女 | 97日日碰人人模人人澡分享吧 | 在线观看亚洲国产精品 | www国产精品com | 久久国产精品视频观看 | 亚洲日韩精品欧美一区二区 | 黄色小说免费观看 | 欧美久久久久久久 | 久久伊人热 | 欧美色噜噜| 久草99 | 在线视频欧美日韩 | 91视频-88av | 久操视频在线 | 欧美一区免费在线观看 | 国产亚洲精品免费 | 丝袜美女在线观看 | 日韩网站一区 | 一区二区不卡高清 | 96精品高清视频在线观看软件特色 | 欧美午夜一区二区福利视频 | 伊人伊成久久人综合网小说 | 超碰免费观看 | 婷婷丁香狠狠爱 | 亚洲国产片 | 夜夜躁日日躁 | 亚洲第一香蕉视频 | 在线视频观看成人 | www.com久久久| 国产正在播放 | 日韩视频中文字幕 | 狠狠干中文字幕 | 午夜精品视频一区二区三区在线看 | 欧美日本高清视频 | 99在线精品免费视频九九视 | 国产黄色一级片 | 欧美日韩一区二区三区在线免费观看 | 成人av久久 | 久久精品视频18 | 97超视频免费观看 | 天天天干 | 最新99热| 亚洲精品欧美成人 | 视频在线在亚洲 | 免费h精品视频在线播放 | 国产黄色a | 色网站免费在线观看 | 国内精品视频久久 | 69人人| 欧美日韩中文国产 | 深爱五月网| 999精品| 国产午夜小视频 | 一级精品视频在线观看宜春院 | 国产精品露脸在线 | 国产精品18久久久久久久网站 | 91系列在线观看 | .国产精品成人自产拍在线观看6 | 久久99视频免费观看 | 日韩性网站 | 欧美日韩91 | 午夜精品久久久久久久99 | 国产精久久久 | 精品资源在线 | 国产又黄又爽无遮挡 | 国产福利免费看 | 久久久精品国产免费观看一区二区 | 日韩色在线 | 日韩在线观看中文 | 日韩日韩日韩日韩 | 中文字幕日韩伦理 | 亚洲视频一区二区三区在线观看 | 69精品在线观看 | 国产精品99久久久久久有的能看 | 国产精品欧美 | 久久人人爽人人爽人人片av软件 | 国产精品自产拍在线观看蜜 | 亚洲精品在线观看的 | 一区二区丝袜 | 午夜少妇一区二区三区 | 国产成人在线免费观看 | 99亚洲精品视频 | 午夜国产一区 | 亚洲精品视频网址 | 中文字幕视频 | 人人搞人人干 | 国产一区免费观看 | 精品在线视频一区二区三区 | 99精品免费久久久久久日本 | 国产成人亚洲精品自产在线 | 麻豆你懂的 | www.综合网.com| 久久精品国产一区二区三 | 精品国内自产拍在线观看视频 | 国产视频网站在线观看 | 日韩在线视频网站 | 一区二区三区免费看 | 欧美污污视频 | 麻豆成人精品视频 | 国产一级免费在线观看 | 国产69精品久久app免费版 | 在线91播放 | 国产精品6 | 91精品国产一区二区在线观看 | 成年人免费观看在线视频 | 久久a v视频 | 国产成人精品久久 | 在线一二三四区 | 精品久久久久久久久久久久久 | 亚洲综合欧美激情 | 国产精品久久久久婷婷二区次 | 韩日精品在线 | 欧美日韩精品在线观看 | 青草视频在线播放 | 91禁在线观看 | 亚洲精品黄色片 | 久久99精品国产一区二区三区 | 在线观看一区二区精品 | a一片一级 | 91最新网址 | 免费观看一级成人毛片 | 中文字幕在线免费看 | 国产资源在线播放 | 久久久91精品国产一区二区精品 | 五月婷婷欧美视频 | 国产91区 | 少妇自拍av | 欧美精选一区二区三区 | 国产 日韩 欧美 自拍 | www.夜色321.com| 久久久网| 久久久亚洲精品 | 欧美 日韩 性 | 亚洲精品久久久久999中文字幕 | www色com| av中文字幕第一页 | 成人永久免费 | 亚洲国产电影在线观看 | 超碰人人做 | 综合色亚洲 | 国产黄免费在线观看 | 三级av小说 | 激情五月婷婷 | 亚洲一区二区精品 | 亚洲久草视频 | 中文字幕色播 |