一:需求描述

拼图是一款益智类经典游戏了,本游戏学习了一些前辈们的经验,整体来说讲,将图片用切图工具进行切割,监听用户手指滑动事件,当用户对凌乱的图片,在一定的时间内拼凑恢复成原来的样子,则成功闯关。 根据游戏不同的关卡对图片进行动态的切割。玩家可以在随意交换任意两张图片,通过遍历切割好的每块图片,将用户选中的图片,进行替换;
其中主要的功能为:

  1. 动态对图片进行切割成所需要的份数。
  2. 玩家任意点击的两张图片能够进行正确交换。
  3. 实现交换图片的动画切换效果。
  4. 实现过关逻辑。
  5. 实现游戏时间逻辑控制。
  6. 游戏结束和暂停。

二:主要功能分析

在拼图游戏开发过程中,实现的主要的功能;提供给用户所使用,具体功能分析如下所示:

  1. 编写切片工具:由于拼图游戏需要准备一个完整的图片,从直观上来看,我们不能每次都将一个完整的图片进行分割,如果是3*3,分成9块,4*4分成16份,这样带来的图片资源极大的混乱,不利于后期的维护,然后Andorid就提供了具体的方法来实现对特定图片的切图工具,通过传入的参数的不同,对图片分割成所需要的矩阵,并设置每块的宽高。利用两个for循环进行切图。并设置每块图片的大小位置和每块图片的块号下标Index。

  2. 自定义容器:自定义相对布局文件,用来存放切割好的图片,并设置图片之间的间隙,以及确定图片上下左右的关系。以及设置图片与容器的内边距设置。

  3. 实现图片交换:实现手指的监听事件,将对选中的两张图片进行位置的变换。

  4. 实现交换图片的动画效果:构造动画层,设置动画,监听动画

  5. 实现游戏过关逻辑:成功的判断,关卡的回调。

  6. 实现游戏时间逻辑:游戏时间的更新,以及Handler不断的回调,时间超时后游戏状态的处理,以及成功闯关后,游戏时间的变更。

  7. 游戏的结束与暂停:当用户返回主页面的时候,游戏能够暂停,当用户返回游戏的时候,游戏可以重新开始。


三:概要设计

  1. **切图工具类**ImagePiece和ImageSplitterUtil。其中ImagePiece对Bitmap图片的块号与每一块图片的位置进行属性的基本设置;在切图工具类ImageSplitterUtil中,提供一个切图方法splitImage,将传入的Bitmap图片分割成Piece*Piece块,并设置每块宽度,将分割好的图片放入到List中。

  2. 自定义View:GamePintuLayout.java中运用的主要工具有:
    单位转换:将传入的数值进行单位转换成3PX,使得屏幕可识别。

    //单位的转换
    mMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,3, getResources().getDisplayMetrics());
    /*获取多个参数的最小值*/private int min(int... params) {int min = params[0];for (int param : params) {if (param < min)min = param;}return min;}
  3. 图片乱序的实现

    // 使用sort完成我们的乱序    
    Collections.sort(mItemBitmaps, new Comparator<ImagePiece>() {public int compare(ImagePiece a, ImagePiece b) {return Math.random() > 0.5 ? 1 : -1;}});
  4. 图片的交换:在监听事件中,当用户选中了两张图片,则对图片进行交换,并对第一次选中的图片,进行样式的设置。如果用户重复点击一张图片,则消除图片的选中状态。通过给图片设置的Tag,找到Id, 然后找到Bitmap图片的index,然后进行交换同时交换Tag。

            String firstTag = (String) mFirst.getTag();String secondTag = (String) mSecond.getTag();mFirst.setImageBitmap(secondBitmap);mSecond.setImageBitmap(firstBitmap);mFirst.setTag(secondTag);mSecond.setTag(firstTag);
  5. 图片动画切换:构造动画层,mAnimLayout并addView,然后在exchangeView中,先构造动画层,复制两个ImageView,为两个ImageView设置动画,监听动画的开始,让原本的View隐藏,结束以后,将图片交换,将图片显示,移除动画层。

  6. 通过接口对关卡进行回调:实现关卡进阶、时间控制、游戏结束接口。并利用Handler更新UI,在nextLevel方法中实现移除之前的View布局,以及将动画层设置为空,增加mColumn++,然后初始化initBitmap()进行重新切图乱序并InitItem()设置图片的图片宽高。

    public interface GamePintuListener {void nextLevel(int nextLevel);void timechanged(int currentTime);void gameover();}public GamePintuListener mListener;/** 设置接口回调*/
    public void setOnGamePintuListener(GamePintuListener mListener) {this.mListener = mListener;}
  7. 根据当前等级设置游戏的时间:mTime = (int)Math.pow(2, level)*60;进而更行我们的Handler。mHandler.sendEmptyMessageDelayed(TIME_CHANGED, 1000)使得时间动态的减一。

  8. 游戏暂停开始
    mHandler.removeMessages(TIME_CHANGED);
    而重新开始游戏则是:mHandler.sendEmptyMessage(TIME_CHANGED);


四:系统实现

工具类:

  • ImagePiece.java
  • ImageSplitterUtil.java

自定义容器:

  • GamePintuLayout.java

ImagePiece.java

package com.example.utils;
import android.graphics.Bitmap;
public class ImagePiece {private int index;// 当前第几块private Bitmap bitmap;// 指向当前图片public ImagePiece(){}public ImagePiece(int index, Bitmap bitmap) {this.index = index;this.bitmap = bitmap;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}public Bitmap getBitmap() {return bitmap;}public void setBitmap(Bitmap bitmap) {this.bitmap = bitmap;}public String toString() {return "ImagePiece [index=" + index + ", bitmap=" + bitmap + "]";}
}

ImageSplitterUtil.java

//ImageSplitterUtil.java
package com.example.utils;import java.util.ArrayList;
import java.util.List;import android.graphics.Bitmap;public class ImageSplitterUtil {/** 传入Bitmap切成Piece*piece块,返回List<ImagePiece>*/public static List<ImagePiece> splitImage(Bitmap bitmap, int piece) {List<ImagePiece> imagePieces = new ArrayList<ImagePiece>();int width = bitmap.getWidth();int height = bitmap.getHeight();// 每一块的宽度int pieceWidth = Math.min(width, height) / piece;for (int i = 0; i < piece; i++)// 行{for (int j = 0; j < piece; j++)// 列{ImagePiece imagePiece = new ImagePiece();imagePiece.setIndex(j + i * piece);int x = j * pieceWidth;int y = i * pieceWidth;imagePiece.setBitmap(Bitmap.createBitmap(bitmap, x, y,pieceWidth, pieceWidth));imagePieces.add(imagePiece);}}return imagePieces;}
}

GamePintuLayout.java

package com.example.game_pintu.view;import java.util.Collections;
import java.util.Comparator;
import java.util.List;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;import com.example.game_pintu.R;
import com.example.utils.ImagePiece;
import com.example.utils.ImageSplitterUtil;public class GamePintuLayout extends RelativeLayout implements OnClickListener {private int mColumn = 3;/** 容器内边距*/private int mPadding;/** 每张小图之间的距离(横纵)dp*/private int mMargin = 3;private ImageView[] mGamePintuItems;private int mItemWidth;/** 游戏的图片*/private Bitmap mBitmap;private List<ImagePiece> mItemBitmaps;private boolean once;/** 游戏面板的宽度*/private int mWidth;private boolean isGameSuccess;private boolean isGameOver;public interface GamePintuListener {void nextLevel(int nextLevel);void timechanged(int currentTime);void gameover();}public GamePintuListener mListener;/** 设置接口回调*/public void setOnGamePintuListener(GamePintuListener mListener) {this.mListener = mListener;}private int level = 1;private static final int TIME_CHANGED = 0x110;private static final int NEXT_LEVEL = 0x111;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case TIME_CHANGED:if(isGameSuccess||isGameOver||isPause)return;if(mListener !=null){mListener.timechanged(mTime);if(mTime ==0){isGameOver = true;mListener.gameover();return;}}mTime--;mHandler.sendEmptyMessageDelayed(TIME_CHANGED, 1000);break;case NEXT_LEVEL:level = level + 1;if (mListener != null) {mListener.nextLevel(level);} else {nextLevel();}break;default:break;}};};private boolean isTimeEnabled = false;private int mTime;/** 设置是否开启时间*/public void setTimeEnabled(boolean isTimeEnabled) {this.isTimeEnabled = isTimeEnabled;}public GamePintuLayout(Context context) {this(context, null);}public GamePintuLayout(Context context, AttributeSet attrs) {this(context, attrs, 0);}public GamePintuLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}private void init() {/** 单位的转换3--px*/mMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,3, getResources().getDisplayMetrics());mPadding = min(getPaddingLeft(), getPaddingRight(), getPaddingTop(),getPaddingBottom());}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);// 取宽和高的最小值mWidth = Math.min(getMeasuredHeight(), getMeasuredWidth());if (!once) {// 进行切图,以及排序initBitmap();// 设置ImageView(Item)宽高等属性initItem();//判断是否开启时间checkTimeEnable();once = true;}setMeasuredDimension(mWidth, mWidth);}private void checkTimeEnable() {if(isTimeEnabled){//根据当前等级设置时间contTimeBaseLevel();mHandler.sendEmptyMessage(TIME_CHANGED);}}private void contTimeBaseLevel() {mTime = (int)Math.pow(2, level)*60;}// 进行切图,以及排序private void initBitmap() {// TODO Auto-generated method stubif (mBitmap == null) {mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.image1);}mItemBitmaps = ImageSplitterUtil.splitImage(mBitmap, mColumn);// 使用sort完成我们的乱序    Collections.sort(mItemBitmaps, new Comparator<ImagePiece>() {public int compare(ImagePiece a, ImagePiece b) {return Math.random() > 0.5 ? 1 : -1;}});}// 设置ImageView(Item)宽高等属性private void initItem() {mItemWidth = (mWidth - mPadding * 2 - mMargin * (mColumn - 1))/ mColumn;mGamePintuItems = new ImageView[mColumn * mColumn];// 生成Item, 设置Rule;for (int i = 0; i < mGamePintuItems.length; i++) {ImageView item = new ImageView(getContext());item.setOnClickListener(this);item.setImageBitmap(mItemBitmaps.get(i).getBitmap());mGamePintuItems[i] = item;item.setId(i + 1);// item中tag存储了indexitem.setTag(i + "_" + mItemBitmaps.get(i).getIndex());RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(mItemWidth, mItemWidth);// 设置item艰横向间隙,通过RightMargin// 不是最后一列if ((i + 1) % mColumn != 0) {lp.rightMargin = mMargin;}// 不是第一列if (i % mColumn != 0) {lp.addRule(RelativeLayout.RIGHT_OF,mGamePintuItems[i - 1].getId());}// 如果不是第一行,设置TopMargin and ruleif ((i + 1) > mColumn) {lp.topMargin = mMargin;lp.addRule(RelativeLayout.BELOW,mGamePintuItems[i - mColumn].getId());}addView(item, lp);}}public void restart(){isGameOver = false;mColumn--;nextLevel();}private boolean isPause;public void pause(){isPause = true;mHandler.removeMessages(TIME_CHANGED);}public void resume(){if(isPause){isPause = false;mHandler.sendEmptyMessage(TIME_CHANGED);}}public void nextLevel() {this.removeAllViews();mAnimLayout = null;mColumn++;isGameSuccess = false;checkTimeEnable();initBitmap();initItem();}/** 获取多个参数的最小值*/private int min(int... params) {int min = params[0];for (int param : params) {if (param < min)min = param;}return min;}private ImageView mFirst;private ImageView mSecond;public void onClick(View v) {if (isAniming)return;// 两次点击同一个Itemif (mFirst == v) {mFirst.setColorFilter(null);mFirst = null;return;}if (mFirst == null) {mFirst = (ImageView) v;mFirst.setColorFilter(Color.parseColor("#55FF0000"));} else {mSecond = (ImageView) v;// 交换我们的ItemexchangeView();}}/** 动画层*/private RelativeLayout mAnimLayout;private boolean isAniming;/** 交换Item*/private void exchangeView() {mFirst.setColorFilter(null);// 构造动画层setUpAnimLayout();ImageView first = new ImageView(getContext());final Bitmap firstBitmap = mItemBitmaps.get(getImageIdByTag((String) mFirst.getTag())).getBitmap();first.setImageBitmap(firstBitmap);LayoutParams lp = new LayoutParams(mItemWidth, mItemWidth);lp.leftMargin = mFirst.getLeft() - mPadding;lp.topMargin = mFirst.getTop() - mPadding;first.setLayoutParams(lp);mAnimLayout.addView(first);ImageView second = new ImageView(getContext());final Bitmap secondBitmap = mItemBitmaps.get(getImageIdByTag((String) mSecond.getTag())).getBitmap();second.setImageBitmap(secondBitmap);LayoutParams lp2 = new LayoutParams(mItemWidth, mItemWidth);lp2.leftMargin = mSecond.getLeft() - mPadding;lp2.topMargin = mSecond.getTop() - mPadding;second.setLayoutParams(lp2);mAnimLayout.addView(second);// 设置动画TranslateAnimation anim = new TranslateAnimation(0, mSecond.getLeft()- mFirst.getLeft(), 0, mSecond.getTop() - mFirst.getTop());anim.setDuration(300);anim.setFillAfter(true);first.startAnimation(anim);TranslateAnimation animSecond = new TranslateAnimation(0,-mSecond.getLeft() + mFirst.getLeft(), 0, -mSecond.getTop()+ mFirst.getTop());animSecond.setDuration(300);animSecond.setFillAfter(true);second.startAnimation(animSecond);// 监听动画anim.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {mFirst.setVisibility(View.INVISIBLE);mSecond.setVisibility(View.INVISIBLE);isAniming = true;}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {String firstTag = (String) mFirst.getTag();String secondTag = (String) mSecond.getTag();mFirst.setImageBitmap(secondBitmap);mSecond.setImageBitmap(firstBitmap);mFirst.setTag(secondTag);mSecond.setTag(firstTag);mFirst.setVisibility(View.VISIBLE);mSecond.setVisibility(View.VISIBLE);mFirst = mSecond = null;// 判断游戏用户是否成功checkSuccess();isAniming = false;}});}private void checkSuccess() {boolean isSuccess = true;for (int i = 0; i < mGamePintuItems.length; i++) {ImageView imageView = mGamePintuItems[i];if (getImageIndexByTag((String) imageView.getTag()) != i) {isSuccess = false;}}if (isSuccess) {isGameSuccess = true;mHandler.removeMessages(TIME_CHANGED);Toast.makeText(getContext(), "Success, level up!",Toast.LENGTH_LONG).show();mHandler.sendEmptyMessage(NEXT_LEVEL);}}public int getImageIdByTag(String tag) {String[] split = tag.split("_");return Integer.parseInt(split[0]);}public int getImageIndexByTag(String tag) {String[] split = tag.split("_");return Integer.parseInt(split[1]);}/*** 构造我们的动画层*/private void setUpAnimLayout() {if (mAnimLayout == null) {mAnimLayout = new RelativeLayout(getContext());addView(mAnimLayout);} else {mAnimLayout.removeAllViews();}}}

MainActivity.java

package com.example.game_pintu;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.widget.TextView;import com.example.game_pintu.view.GamePintuLayout;
import com.example.game_pintu.view.GamePintuLayout.GamePintuListener;public class MainActivity extends Activity {private GamePintuLayout mGamePintuLayout;private TextView mLevel;private TextView mTime;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTime = (TextView) findViewById(R.id.id_time);mLevel = (TextView) findViewById(R.id.id_level);mGamePintuLayout = (GamePintuLayout) findViewById(R.id.id_gamepintu);mGamePintuLayout.setTimeEnabled(true);mGamePintuLayout.setOnGamePintuListener(new GamePintuListener() {@Overridepublic void timechanged(int currentTime) {mTime.setText("" + currentTime);}@Overridepublic void nextLevel(final int nextLevel) {new AlertDialog.Builder(MainActivity.this).setTitle("GAME INFO").setMessage("LEVEL UP!!!").setPositiveButton("NEXT LEVEL", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {mGamePintuLayout.nextLevel();mLevel.setText("" + nextLevel);}}).show();}@Overridepublic void gameover() {new AlertDialog.Builder(MainActivity.this).setTitle("GAME INFO").setMessage("GAME OVER!!!").setPositiveButton("RESTART", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {// mGamePintuLayout.nextLevel();mGamePintuLayout.restart();}}).setNegativeButton("QUIT", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {finish();}}).show();}});}@Overrideprotected void onPause() {super.onPause();mGamePintuLayout.pause();}@Overrideprotected void onResume() {super.onResume();mGamePintuLayout.resume();}
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="${relativePackage}.${activityClass}" ><com.example.game_pintu.view.GamePintuLayout
        android:id="@+id/id_gamepintu"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:padding="3dp" /><RelativeLayout
        android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_above="@id/id_gamepintu" ><TextView
            android:id="@+id/id_level"android:layout_width="40dp"android:layout_height="40dp"android:background="@drawable/textbg"android:gravity="center"android:padding="4dp"android:text="1"android:textColor="#EA7821"android:textSize="10sp"android:textStyle="bold" /><TextView
            android:id="@+id/id_time"android:layout_width="40dp"android:layout_height="40dp"android:layout_alignParentRight="true"android:background="@drawable/textbg"android:gravity="center"android:padding="4dp"android:text="50"android:textColor="#EA7821"android:textSize="10sp"android:textStyle="bold" /></RelativeLayout>
</RelativeLayout>

in drawable new textbg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval" ><stroke
        android:width="2px"android:color="#1579DB"/><solid android:color="#B4CDE6"/>
</shape>

五:测试

  • 开始游戏

    这里写图片描述

  • 成功

    这里写图片描述

  • 成功进阶

    进阶


Thanks慕课网视频学习

云盘下载代码,点击前复制访问密码访问密码 5a96

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. js 截取特殊字符前后的所有字符串

    截取/前的字符 var index = pythonpath.lastIndexOf("/");Writepathexe = pythonpath.substring(0, index);截取/后的字符 var index = pythonpath.lastIndexOf("/"); str =str .substring(index+1,str.length);...

    2024/3/15 10:09:00
  2. 中小型手机棋牌网络游戏服务端架构设计(带源码)

    承接自己《中小型棋牌类网络游戏服务端架构》博文,用Golang实现基础架构逻辑后,准备再次谈谈我的想法。 已实现的逻辑与前文描述有几点不同:Gateway更名为Proxy,DBProxy更名为DB Proxy同时持有与(Login, Game)不同类型服务器的多条连接 DB不参与负载均衡,考虑是棋牌数据…...

    2024/3/26 14:43:58
  3. 如何将程序员写出来的程序打包成安装包(最简单的)

    一、准备工作:先下载一个Inno Setup编译器,这里我用到的是5.3.3中文版的。 下载地址:http://www.skycn.com/soft/5625.html 软件介绍: Inno Setup 是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,…...

    2024/3/15 17:37:52
  4. PreferenceActivity 分屏显示 分析

    先上效果图:PreferenceActivity 设置代码如下,通过getListView 遍历视图结构,主要调整间距与背景色 package com.example.testsettings;import java.util.List;import android.os.Bundle; import android.preference.PreferenceActivity; import android.app.Activity; impor…...

    2024/3/20 19:57:08
  5. js-字符串截取的几种方法

    截取字符串的使用是比较广泛的,在js的学习中整理了几个方法: split() 方法 substr()方法 substring()方法 1.split()方法定义和用法split()方法用于把一个字符串分割成字符串数组语法stringObject.split(separator,howmany)参数separator描述必须,从该参数指定地方…...

    2024/3/19 20:42:24
  6. linux设备驱动程序中的阻塞机制

    阻塞与非阻塞是设备访问的两种方式。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。 一、阻塞与非阻塞阻塞调用是指调用结果返回之前,当前线程会被挂起,函数只有在得到结果之后才会返回。非阻塞指不能立刻得到结果之前,该函数不会阻塞当前进程,而会立刻返回。对象是否处…...

    2024/3/15 17:37:49
  7. 关于winform生成的exe无法打开等异常情况总结

    对于安装部署后的程序,总结有以下几种原因可能会造成在电脑上无法打开的情况出现: 1) 目标计算机上没有安装相应的.NET框架:在打包安装程序时,将.NET 框架打包(系统必备); 2) 在xp系统上无法安装时,可以考虑:i. 是否是图标ico的大小造成:win7系统支持大图标,xp系…...

    2024/3/26 12:13:26
  8. 树莓派笔记4:树莓派游戏机

    这次记录比较轻松的内容,将树莓派做成“游戏主机”,当然这个主机只是具备模拟器功能而已,可以模拟街机、FC等平台上的游戏。最早要在树莓派上玩模拟器游戏需要手动安装和配置不同的模拟器,而现在国外很多爱好者专门制作了定制化的系统,直接把系统烧到树莓派就行了,不得不…...

    2024/3/20 10:35:55
  9. JavaWeb项目打包Tomcat,MySQL,Java成.exe可执行安装包

    JavaWeb项目打包Tomcat,MySQL,Java成.exe可执行安装包本打包方式采用全绿色版本软件打包,用户安装可以直接点击下一步下一步即可;可同时支持win XP和Win7,同时支持32位和64位操作系统;支持Windows service操作系统; 整个打包过程需要依赖一下东西,并且我这些都能提供:…...

    2024/3/23 13:44:40
  10. Linux下自定义虚拟串口驱动

    前些天给新的板子修改BUG的时候,发现这块板子的串口是接在板载MCU上,我们的主SOC(海思HI3520D)上已经没有多余的串口。于是问题来了… 我们很多的上层应用都是通过串口和传感器通讯的,而且程序都是默认使用SOC上的串口,即打开/dev/ttyAMAx,然后调用Linux的select系统调用…...

    2024/3/15 17:37:43
  11. Android actionBar与Fragment结合使用Demo2

    上一篇文章介绍了ActionBar的使用,这里介绍ActionBar的另一种使用方法,达到的效果和以前的GroupActivity或TabHost是一样的,可作为导航来使用。 实现效果图:源代码:布局文件:activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res…...

    2024/3/25 13:09:58
  12. 爬虫在游戏数据分析的一个实践

    转载于hthttp://www.gamedatas.com/archives/73 在实际工作中,数据的来源不能局限于自家的数据库或者成型的后台,在做某些市场分析或是竞争对手开服节奏分析的情况下,对竞争对手数据的获得显得更为至关重要,本文就以获取某大平台开服数据作为一个案例,简要的介绍另一种获取…...

    2024/3/13 17:57:24
  13. js 字符串截取与数组截取

    1.substring处理字符串 函数:split() 功能:把一个字符串分割存储到数组 函数:join() 功能:将一个数组合并为一个字符串 函数:substring() 功能:字符串截取,比如想从&quot;MinidxSearchEngine&quot;中得到&quot;Minidx&quot;就要用到substring(0,6) …...

    2024/3/21 8:50:15
  14. VS自带的打包程序同时自动运行一个EXE或批处理命令

    我做的继承类的代码是这样的,请指点 using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.Diagnostics; using System.IO; namespace ClassLibrary1 { [RunInstaller(true)] …...

    2024/3/15 12:05:57
  15. 串口驱动程序设计详解---串口打开、发送、接收(下)

    上一篇博客分析了串口驱动初始化部分,下面逐步分析串口驱动中的打开串口,数据发送和接收! 初始化主要工作流程:先来分析串口打开操作流程,还是先上图:这里分析还是离不开上篇博客中的两张重要的图:串口操作重要的数据结构:由上一篇串口驱动分析可知在samsung.c中模块初…...

    2024/3/15 17:37:44
  16. js 截取指定字符串

    从字符串“_”开始剪切var string="149874_hanlu";var Index=string.lastIndexOf(_);string.substr(Index,Index.length);...

    2024/3/25 2:04:41
  17. Android Fragment详解(二):Fragment创建及其生命周期

    Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件。 对应生命周期可参考下图:创建片元(Creating a Fragment)To create a fragment, you must create a subclass of Fragment (or an existing subclass of it). The Fragme…...

    2024/3/15 17:37:41
  18. 【C++】VS2010将写好的程序打包成安装文件发布

    我们可以将自己写好的VS2010程序打包成安装文件,给用户安装,具体步骤如下: 1、如下图,同样是新建一个项目,但是这次是新建一个其它项目类型,关于安装和部署,Visual Studio Installer中的安装向导。之后,创建完成之后,弹出的向导,没什么特殊情况,可以直接下一步到完成…...

    2024/3/15 17:37:39
  19. 支持多平台!2D和3D游戏引擎LibGDX!----Java流

    libGDX是一款跨平台的游戏开发框架,支持桌面、Android、iOS、BlackBerry和HTML5的Java游戏开发框架。它基于Apache 2.0许可协议开源,代码业已托管与Github上。 主要特性: 1.跨平台:一次编码,就可将游戏发布在Windows、Mac、Linux、Android、BlackBerry、iOS和HTML5平台上…...

    2024/3/15 17:37:39
  20. Linux终端tty设备及驱动

    Linux终端tty设备驱动 在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。 14.1节阐述了终端设备的概念及分类,14.2节给出了Linux终端设备驱动的框架结构,重点描述tty_driver结构体及其成员。14.3~14.…...

    2024/3/19 2:50:22

最新文章

  1. ros2相关代码记录

    1.ros2概述 ROS2&#xff08;Robot Operating System 2&#xff09;是一个用于机器人应用程序的开源软件框架。它是ROS&#xff08;Robot Operating System&#xff09;的下一代版本&#xff0c;旨在改进和扩展原始ROS的特性&#xff0c;以适应更广泛的机器人应用场景和需求。…...

    2024/3/29 14:25:28
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. ubuntu 不产生core dump 文件

    目标机器&#xff1a;UBuntu2004 目的&#xff1a;产生coredump 文件 ulimit -c //未设置之前 0ulimit -c unlimited //大小不受限设置 #将1写入到该文件里 echo 1 > /proc/sys/kernel/core_uses_pid mkdir /corefile #这里一定不要加“” echo “/corefile/core-%e…...

    2024/3/29 10:56:38
  4. C++第十三弹---内存管理(下)

    ✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、operator new与operator delete函数 1.1、operator new与operator delete函数 2、new和delete的实现原理 2.1、内置类型 2.2、自定义类型 …...

    2024/3/28 10:59:24
  5. 35.基于SpringBoot + Vue实现的前后端分离-在线考试系统(项目 + 论文)

    项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的在线考试系统设计与实现管理工作系统…...

    2024/3/29 7:54:12
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/3/27 10:21:24
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/3/24 20:11:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/3/29 2:45:46
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/3/24 20:11:23
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/3/29 5:19:52
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/3/28 17:01:12
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/3/29 11:11:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/3/29 1:13:26
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/3/29 8:28:16
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/3/29 7:41:19
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/3/24 20:11:18
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/3/29 9:57:23
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/3/29 0:49:46
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/3/24 20:11:15
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/3/27 7:12:50
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/3/24 20:11:13
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/3/26 11:21:23
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/3/28 18:26:34
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/3/28 12:42:28
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/3/28 20:09:10
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57