精华内容
下载资源
问答
  • 电信设备-移动终端返回主屏幕的方法及移动终端.zip
  • 悬浮窗主要有以下几个功能: 1、跟随手指的滑动而滑动(也可以用鼠标滑动) 2、在手指弹起的时候,悬浮窗会自动停靠在左右两侧 3、点击悬浮窗按钮可以返回到桌面

    说明:本人写博客一来是为了方便日后查看项目,二来是希望能够和广大的程序猿相互交流学习,文章布局简单,如有嫌弃,请绕行,如有错误,请指出,谢谢。

    实验环境:安卓6.0 魅族手机

    悬浮窗主要有以下几个功能:

    1、跟随手指的滑动而滑动(也可以用鼠标滑动)
    2、在手指弹起的时候,悬浮窗会自动停靠在左右两侧
    3、点击悬浮窗按钮可以返回到桌面

    MainActivity中添加6.0访问权限

    6.0权限问题:Google在6.0时加入权限管理机制,6.0之后,android需要动态获取权限,要使用权限,不仅要在manifest文件中定义,还要在代码中动态获取。点我了解权限问题

    manifest中添加权限声明

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

    MainActivity中代码如下:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if (Settings.canDrawOverlays(MainActivity.this)) {
                Intent intent = new Intent(MainActivity.this, FloatViewService.class);
                Toast.makeText(MainActivity.this, "已开启悬浮窗", Toast.LENGTH_SHORT).show();
                startService(intent);
                finish();
            } else {
                //若没有权限,提示获取.
                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
                intent.setData(Uri.parse("package:" + getPackageName()));
                Toast.makeText(MainActivity.this, "需要取得权限以使用悬浮窗", Toast.LENGTH_SHORT).show();
                startActivity(intent);
                finish();
            }
        }
    }
    

    代码说明:如果手机已授予该app使用悬浮窗的功能,界面会自动开启悬浮窗,MainActivity被finish,否则直接跳转到本手机开启悬浮窗权限的界面,亲测有效,比如魅族手机开启权限的界面如下图所示:
    亲测可以字节
    问题:只有在第一次安装app的时候才会跳转到打开权限的界面,之后打开app则不会跳转,这部分不太理解,有知悉的评论区见。

    悬浮窗界面的绘制

    Android的窗口是基于WindowManager实现的,它面向的对象一端是屏幕,另一端就是View,比如我们之前使用的setContentView(R.layout.activity_main), 就是将view显示在屏幕上,代码的底层都是经过WindowManager实现的,整个系统只有一个WindowManager。点我了解界面绘制详解

    Service实现后台运行

    当app没有被关闭时,悬浮窗同样可以运行,这时候就需要Service来实现后台运行。这里可自行百度Service具体实现的过程,本篇不做解释。

    跟随手指的滑动而滑动

    说明:需要监听手势,所以设置了setOnTouchListener,识别按下、移动、弹起三个动作,移动的过程需要动态获取触摸的坐标,所以首先要在按下的过程中获取按下的坐标,rawX = event.getRawX(); rawY = event.getRawY(),在移动的过程中进行刷新, wmParams.x = wmParams.x - distanceX;wmParams.y = wmParams.y - distanceY。

            // 设置监听浮动窗口的触摸移动
            go_mainhome.setOnTouchListener(new View.OnTouchListener() {
    
                private float rawX;
                private float rawY;
    
                @SuppressLint("ClickableViewAccessibility")
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
    //                        Log.i("qqq", "onTouch------------------------------ACTION_DOWN: ");
                            mFloatLayout.setAlpha(1.0f);//设置其透明度
                            myCountDownTimer.cancel();//取消计时
                            rawX = event.getRawX();
                            rawY = event.getRawY();
                            break;
                        case MotionEvent.ACTION_MOVE:
    //                        Log.i("qqq", "onTouch------------------------------ACTION_MOVE: ");
                            // getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标
                            int distanceX = (int) (event.getRawX() - rawX);
                            int distanceY = (int) (event.getRawY() - rawY);
                            //mFloatView.getMeasuredWidth()和mFloatView.getMeasuredHeight()都是100
                            wmParams.x = wmParams.x - distanceX;
                            wmParams.y = wmParams.y - distanceY;
                            // 刷新
                            mWindowManager.updateViewLayout(mFloatLayout, wmParams);
                            rawX = event.getRawX();
                            rawY = event.getRawY();
                            break;
                        case MotionEvent.ACTION_UP:
                            myCountDownTimer.start();//重新开始计时
                            if (wmParams.x < screenWidth / 2) {
                                //在屏幕右侧
                                wmParams.x = 0;
                                wmParams.y = wmParams.y - 0;
                            } else {
                                //在屏幕左侧
                                wmParams.x = screenWidth;
                                wmParams.y = wmParams.y - 0;
                            }
                            mWindowManager.updateViewLayout(mFloatLayout, wmParams);
                            break;
                    }
                    return false;//此处必须返回false,否则OnClickListener获取不到监听
                }
            });
    

    获取屏幕大小
    尝试了好几种获取屏幕大小的代码,此方法亲测有效。

            Display display = mWindowManager.getDefaultDisplay();
            Point point = new Point();
            display.getRealSize(point);
            screenWidth = point.x;
            screenHeight = point.y;
            Log.i("qqq", "screenWidth------: " + screenWidth + "\n" + "screenHeight---" + screenHeight);
    

    停靠功能

    说明:当手指滑动到屏幕中央右侧时,比如在图中的A点(x,y),最终悬浮窗将会停靠在图中的B点,A点向右平移到B点,纵坐标不变,横坐标为0,在屏幕左侧同理,可详见代码case MotionEvent.ACTION_UP部分,前提是需要设置 wmParams.gravity = Gravity.RIGHT | Gravity.BOTTOM,可以滑动最下面看详细代码。
    在这里插入图片描述

    点击悬浮窗按钮可以返回到桌面

    其实就是对按钮设置了监听setOnClickListener,点击之后跳转到桌面的main。

    Service中的代码

    package com.lightingcontour.toucher;
    
    import android.annotation.SuppressLint;
    import android.app.Service;
    import android.content.Intent;
    import android.content.res.Resources;
    import android.graphics.PixelFormat;
    import android.graphics.Point;
    import android.os.CountDownTimer;
    import android.os.IBinder;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.Display;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.ImageButton;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    
    public class FloatViewService extends Service {
    
        private static final String TAG = "FloatViewService";
        // 定义浮动窗口布局
        private LinearLayout mFloatLayout;
        private WindowManager.LayoutParams wmParams;
        // 创建浮动窗口设置布局参数的对象
        private WindowManager mWindowManager;
    
        private ImageButton go_mainhome;
        private ImageButton go_back;
    //    private LinearLayout toucher_layout;
    
        private int screenHeight;
        private int screenWidth;
        private MyCountDownTimer myCountDownTimer;
    
        @Override
        public void onCreate() {
            super.onCreate();
            Log.i(TAG, "onCreate");
    
            createFloatView();
            myCountDownTimer = new MyCountDownTimer(2500, 1000); //设置计时2.5s
            myCountDownTimer.start();
        }
    
        @SuppressWarnings("static-access")
        @SuppressLint("InflateParams")
        private void createFloatView() {
            wmParams = new WindowManager.LayoutParams();
            // 通过getApplication获取的是WindowManagerImpl.CompatModeWrapper
            mWindowManager = (WindowManager) getApplication().getSystemService(getApplication().WINDOW_SERVICE);
    
            Display display = mWindowManager.getDefaultDisplay();
            Point point = new Point();
            display.getRealSize(point);
            screenWidth = point.x;
            screenHeight = point.y;
            Log.i("qqq", "screenWidth------: " + screenWidth + "\n" + "screenHeight---" + screenHeight);
    
            // 设置window type
            wmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
            // 设置图片格式,效果为背景透明
            wmParams.format = PixelFormat.RGBA_8888;
            // 设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)
            wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
            // 调整悬浮窗显示的停靠位置为右侧底部
            wmParams.gravity = Gravity.RIGHT | Gravity.BOTTOM;
            // 以屏幕左上角为原点,设置x、y初始值,相对于gravity
            wmParams.x = 0;
            wmParams.y = 0;
            // 设置悬浮窗口长宽数据
            wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
            wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
    
            LayoutInflater inflater = LayoutInflater.from(getApplication());
            // 获取浮动窗口视图所在布局
            mFloatLayout = (LinearLayout) inflater.inflate(R.layout.toucherlayout, null);
            // 添加mFloatLayout
            mWindowManager.addView(mFloatLayout, wmParams);
            // 浮动窗口按钮
    
            go_mainhome = (ImageButton) mFloatLayout.findViewById(R.id.go_mainhome);
            go_back = (ImageButton) mFloatLayout.findViewById(R.id.go_back);
    
            //UNSPECIFIED是未指定模式
            mFloatLayout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    
            // 设置监听浮动窗口的触摸移动
            go_mainhome.setOnTouchListener(new View.OnTouchListener() {
    
                private float rawX;
                private float rawY;
    
                @SuppressLint("ClickableViewAccessibility")
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
    //                        Log.i("qqq", "onTouch------------------------------ACTION_DOWN: ");
                            mFloatLayout.setAlpha(1.0f);//设置其透明度
                            myCountDownTimer.cancel();//取消计时
                            rawX = event.getRawX();
                            rawY = event.getRawY();
                            break;
                        case MotionEvent.ACTION_MOVE:
    //                        Log.i("qqq", "onTouch------------------------------ACTION_MOVE: ");
                            // getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标
                            int distanceX = (int) (event.getRawX() - rawX);
                            int distanceY = (int) (event.getRawY() - rawY);
                            //mFloatView.getMeasuredWidth()和mFloatView.getMeasuredHeight()都是100
                            wmParams.x = wmParams.x - distanceX;
                            wmParams.y = wmParams.y - distanceY;
                            // 刷新
                            mWindowManager.updateViewLayout(mFloatLayout, wmParams);
                            rawX = event.getRawX();
                            rawY = event.getRawY();
                            break;
                        case MotionEvent.ACTION_UP:
                            myCountDownTimer.start();//重新开始计时
                            if (wmParams.x < screenWidth / 2) {
                                //在屏幕右侧
                                wmParams.x = 0;
                                wmParams.y = wmParams.y - 0;
                            } else {
                                wmParams.x = screenWidth;
                                wmParams.y = wmParams.y - 0;
                            }
                            mWindowManager.updateViewLayout(mFloatLayout, wmParams);
                            break;
                    }
                    return false;//此处必须返回false,否则OnClickListener获取不到监听
                }
            });
    
            // 设置监听浮动窗口的触摸移动
            go_back.setOnTouchListener(new View.OnTouchListener() {
    
                private float rawX;
                private float rawY;
    
                @SuppressLint("ClickableViewAccessibility")
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
    //                        Log.i("qqq", "onTouch------------------------------ACTION_DOWN: ");
                            mFloatLayout.setAlpha(1.0f);//设置其透明度
                            myCountDownTimer.cancel();//取消计时
                            rawX = event.getRawX();
                            rawY = event.getRawY();
                            break;
                        case MotionEvent.ACTION_MOVE:
    //                        Log.i("qqq", "onTouch------------------------------ACTION_MOVE: ");
                            // getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标
                            int distanceX = (int) (event.getRawX() - rawX);
                            int distanceY = (int) (event.getRawY() - rawY);
                            //mFloatView.getMeasuredWidth()和mFloatView.getMeasuredHeight()都是100
                            wmParams.x = wmParams.x - distanceX;
                            wmParams.y = wmParams.y - distanceY;
                            // 刷新
                            mWindowManager.updateViewLayout(mFloatLayout, wmParams);
                            rawX = event.getRawX();
                            rawY = event.getRawY();
                            break;
                        case MotionEvent.ACTION_UP:
                            myCountDownTimer.start();//重新开始计时
                            if (wmParams.x < screenWidth / 2) {
                                //在屏幕右侧
                                wmParams.x = 0;
                                wmParams.y = wmParams.y - 0;
                            } else {
                                wmParams.x = screenWidth;
                                wmParams.y = wmParams.y - 0;
                            }
                            mWindowManager.updateViewLayout(mFloatLayout, wmParams);
                            break;
                    }
                    return false;//此处必须返回false,否则OnClickListener获取不到监听
                }
            });
    
    
            go_mainhome.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(FloatViewService.this, "返回到桌面",
                            Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent();
                    // 为Intent设置Action、Category属性
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.setAction(Intent.ACTION_MAIN);// "android.intent.action.MAIN"
                    intent.addCategory(Intent.CATEGORY_HOME); //"android.intent.category.HOME"CATEGORY_HOME  目标Activity是HOME Activity,即手机开机启动后显示的Activity,或按下HOME键后显示的Activity
                    startActivity(intent);
                }
            });
    
            go_back.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
    
                    Toast.makeText(FloatViewService.this, "返回",
                            Toast.LENGTH_SHORT).show();
    
                }
            });
    
    
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
            if (mFloatLayout != null) {
                // 移除悬浮窗口
                mWindowManager.removeView(mFloatLayout);
            }
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        public class MyCountDownTimer extends CountDownTimer {
    
            public MyCountDownTimer(long millisInFuture, long countDownInterval) {
                super(millisInFuture, countDownInterval);
            }
    
            @Override
            public void onTick(long millisUntilFinished) {
            }
    
            @Override
            public void onFinish() {
                mFloatLayout.setAlpha(0.4f);
            }
        }
    
    }
    
    

    manifest中的代码

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.lightingcontour.toucher">
    
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
        <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <service android:name=".FloatViewService" />
        </application>
    
    </manifest>
    

    布局中的代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    
        <LinearLayout
            android:id="@+id/toucher_layout"
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
    
            <ImageButton
                android:id="@+id/go_mainhome"
                android:layout_marginBottom="10dp"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:background="@drawable/go_mainhome" />
    
            <ImageButton
                android:id="@+id/go_back"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:background="@drawable/go_back" />
    
        </LinearLayout>
    
    
    
    </LinearLayout>
    
    
    展开全文
  • 先把实现方法说在最前: 要实现这个功能,最快捷方法就是在...最初我是往Activity的生命周期方面想的,因为在B中按Home回到主屏幕,就会调用Activity B的生命周期中的onPause()和onStop()方法,这时B还没destroy,如

    先把实现方法说在最前:

    要实现这个功能,最快捷方法就是在配置文件AndroidManifest.xml中,在Activity A添加一句

     android:launchMode="singleTask"

    最初我是往Activity的生命周期方面想的,因为在B中按Home回到主屏幕,就会调用Activity B的生命周期中的onPause()和onStop()方法,这时B还没destroy,如果在进app的话会依次调用B的onRestart(),onStart(),onResume()方法

    因此我一开始是重写B的onRestart()方法,当调用它时就会跳到Activity A,这样就达到效果。

    一开始是成功的,按Home退出后再进能回到A,但是仔细测试后发现在A按Back键不能一次性退出程序。后来试过一些方法,重写过BACK返回键都不能完整退出,会出现在A按BACK后,还是回到A

    再后来,发现每次在B按HOME后再进app,就要多按BACK退出一次。例如启动程序后,A启动B,B按HOME,再进app,再启动B,再按HOME,再进app……以上步骤重复N次后,最后再A想要退出的话,要按N次BACK键才能退出应用,代码如下

    这是Activity A,也是程序入口

    public class MainActivity extends Activity {
    
    	private Button b1;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		b1 = (Button) findViewById(R.id.Button01);
    		b1.setOnClickListener(new OnClickListener() {
    			public void onClick(View v) {
    				Intent intent = new Intent(MainActivity.this,
    						SecondActivity.class);
    				startActivity(intent);
    			}
    		});
    	}
    
    }
    下面是Activity B

    public class SecondActivity extends Activity {
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.secondactivity);//
    	}
    	public void onRestart() {
    		System.out.println("second activity: onRestart()");
    		Intent intent = new Intent(SecondActivity.this, MainActivity.class);
    		startActivity(intent);
    		super.onRestart();
    		finish();//如果不加finish()会一直退不出程序
    	}
    }
    后来想到了activity栈,是不是每次home键退出再进时就会又压一个activity栈呢?这样就解释了n次home键后要n次back键才退出程序

    后来查了下,发现一篇介绍launchMode的:http://blog.csdn.net/liuhe688/article/details/6754323

    看了后明白问题出在哪里,就像那篇文章所说的,默认是standard,不停退出再进,就会不停产生新的Activity A实例,也就是不停将新的Activity A压入栈内

    解决方法就是使用singleTask,把Activity A之上的通通出栈,这样栈顶就是Activity A了,也就达到效果,也不需要重写onRestart方法

    AndroidManifest代码:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.androidtest"
        android:versionCode="1"
        android:versionName="1.0" >
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.androidtest.MainActivity"
                android:label="@string/app_name"
                android:launchMode="singleTask">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.example.androidtest.SecondActivity"></activity>
        </application>
    </manifest>
    



    展开全文
  • 指尖初体验之主屏幕操作

    千次阅读 2012-10-26 10:26:08
    激活完成了,你手中的iPad是屏幕锁定状态,拖动滑块便可解除锁定而进入iPad的主屏幕主屏幕 主屏幕是 iPad 的起始页面,你可以在此找到你的全部应用程序和文件夹。点按主屏幕按钮就可在此切换应用程序,你还可以...

    激活完成了,你手中的iPad是屏幕锁定状态,拖动滑块便可解除锁定而进入iPad的主屏幕。

    主屏幕

    主屏幕是 iPad 的起始页面,你可以在此找到你的全部应用程序和文件夹。点按主屏幕按钮就可在此切换应用程序,你还可以在主屏幕上添加常用应用程序和网站,并用文件夹进行整理,让你的 iPad 更加个性化。

    iPad的主屏幕
    主屏幕呈“小清新”风格,简单明了,分为三个区域:
    状态栏

    区域1为状态栏,显示网络信号强度、时间及电池剩余电量等信息。

    状态栏可以快速下拉的通知栏,方便用户查看所有未读的通知,包括未读邮件和应用程序的相关提醒等等,你仅仅是用手指按住屏幕顶端,然后轻轻向下一划,便可查看到未读的通知。
    应用程序区
    区域2为应用程序区,你iPad上的所有应用程序,都以图标的形式在那显示,也称为桌面图标,轻按图标即可进入程序。
    Dock快捷栏

    区域3为Dock快捷栏,最多可以放6个应用程序。 Dock快捷栏的上方,有几个圆点,圆点数量显示您拥有的主屏幕数量,以及您正在查看的主屏幕。

    iPad 中的应用程序越多,拥有的主屏幕数量也就越多,最多可达 11 个,轻轻一扫即能浏览。你可在主屏幕上根据自己的喜好编排应用程序的位置,或者将其在屏幕间移动。你可以直接在 iPad 上管理这些主屏幕,也可在 Mac 或 PC 的 iTunes 中进行编排,然后再同步到 iPad 上。
    怎么在锁屏的情况下不解锁看照片:在设置里面密码锁定屏幕里面选择相册,平时你会看到右下角一个花一样的图标 ,那就是播放相册的图标,轻按该图标将以幻灯片的方式随机播放相册图片。
    怎么在锁屏的情况下不解锁播放音乐:在锁屏的条件下,快速连按两下Home键,你会发现右上角出现播放控制键,如果iPod里面有音乐,就可以开始了。
    如何在不同的屏幕之间切换:在屏幕上向左或向右滑动手指,或者在一行圆点的左右轻按,可以进入新的屏幕。在任意屏幕界面,轻按HOME键均能回到主屏幕。
    怎么移动桌面图标:长按桌面图标,直到桌面图标都动起来,进入编辑状态,这时,按住晃动的图表,随意拖曳移动吧,最后点按HOME按钮结束。
    怎么将桌面图标移至Dock快捷栏:默认情况下,Dock快捷栏上有四种应用程序,但你可以添加至有多达6个应用程序达到快速访问的目的。

    长按桌面图标,直到桌面图标都动起来,进入编辑状态,用手指将图标拖到Dock快捷栏即可,最后点按HOME按钮结束。当然,你最好把最常用的6个应用程序放到Dock快捷栏上。

    怎么将桌面图标从Dock快捷栏删除:长按桌面图标,直到桌面图标都动起来,进入编辑状态,用手指将图标从Dock快捷栏拖走即可,最后点按HOME按钮结束。
    如何将图标移到另一个屏幕:长按桌面图标,直到桌面图标都动起来,进入编辑状态,用手指将图标拖到屏幕的右边缘,直到出现新屏幕,这样图标就移到新的屏幕中了,最后点按HOME按钮结束。
    如何创建新的屏幕:长按桌面图标,直到桌面图标都动起来,进入编辑状态,用手指扫动到最右边的主屏幕,然后将图标拖到屏幕的右边缘,便创建了新的屏幕,最后点按HOME按钮结束。您最多可以创建11 个主屏幕。Dock 上方的圆点数量显示您拥有的屏幕数量,以及您正在查看的屏幕。
    如何将主屏幕还原为其原始布局:在“设置”中,前往“通用”>“还原”,然后轻按“还原主屏幕布局”。还原主屏幕会移除您所创建的任何文件夹,并将默认墙纸应用到您的主屏幕。
    如何创建文件夹 :当桌面程序太多时,需要建立文件夹存放同类程序,您最多可以将 20 个程序放入一个文件夹中。

    长按桌面图标,直到桌面图标都动起来,进入编辑状态,用手指拖动一个图标,拉到另外一个图标上面,文件夹出现了,这就创建了一个文件夹,这时,点一下文件夹,你可以给文件夹重新命名,最后点按HOME按钮结束。

    文件夹创建后,轻按文件夹图标即可直接查看里面包含的程序。和在主屏幕界面中类似,轻按图标即可进入程序。 
    如何删除文件夹:长按桌面图标,直到桌面图标都动起来,进入编辑状态,点开文件夹,把里面的图表全部拖曳出来,直到最后一个被拖出来,文件夹就消失了,也就是删除了,最后点按HOME按钮结束。
    如何删除一个程序:长按程序图标,直到程序图标都动起来,进入编辑状态,轻触要删除程序图标上的X,在弹出的确认框中选择删除。注意:iPad自带的程序是不能删除的,只能删除你自己下载的程序。
    如何删除类似文件名的内容:这些内容如文档、邮件、联系人等,在文件名上横划一道,出现红色删除按钮就可以点删除。如果不起作用,找找软件中有没有编辑按钮,点击该按钮以后一般文件前面会出现一个圈,选中这个或者这些圈,找到红色删除按钮批量删除(邮件就是这样的)。
    如何搜索屏幕:在主屏幕上向右滑动屏幕或点按HOME键,均可进入搜索界面。您可直接在搜索栏中输入想要查询的内容(包括程序、文件,甚至备忘录中的某个字眼),即iPad能将关键词所涉及的内容以列表方式显示在界面中。

    本文节选自《全新iPad轻松玩(全彩)》一书

    乐果乐生活 编著

    电子工业出版社出版
    展开全文
  • MAC (Catalina)安装完snipast后,按快捷键F1可以截屏,但是每次都是回到主屏幕截屏。就是截屏不了当前的页面。 解决方法: 给snipast软件添加屏幕录制的权限,具体操作:系统偏好设置->安全性与隐私,屏幕...

    问题:

        MAC (Catalina)安装完snipast后,按快捷键F1可以截屏,但是每次都是回到主屏幕截屏。就是截屏不了当前的页面。

    解决方法:

        给snipast软件添加屏幕录制的权限,具体操作:系统偏好设置->安全性与隐私,屏幕录制,将snipast添加到列表中。

    排查过程:

        怀疑是快捷键冲突问题。首先查看snipast的快捷键设置:

     

    然后检查操作系统的快捷键设置:

     

    可见snipast的快捷键设置和系统的快捷键设置并没有冲突。

    展开全文
  • iOS 添加快捷方式到主屏幕

    万次阅读 2017-12-06 14:24:47
    参考文章:iOS 添加到主屏幕/ iOS Add To Desktop iOS创建桌面快捷方式代码 在上面文章和其他资料基础上实现此功能,详细介绍和技术点可参考上述文章。Demo是以第三方CocoaHTTPServer为基础,建立本机服务器,调...
  • 自定义lightswitch主屏幕

    千次阅读 2011-10-10 15:37:49
    在我们的例子中,我们要创建一个主屏幕,当用户第一次启动该应用程序时提供不同的工作流切入点。 创建一个空白的屏幕 让我们首先创建要我们的主屏幕空白屏幕。若要创建一个空白屏幕,您可以在添加新的屏幕对话框中...
  • iphone 屏幕Khamosh PathakKhamosh PathakApple brought widgets to the iPhone’s Home screen with iOS 14. They are an evolved form of the widgets from the Today View screen. Here’s how to add and remove...
  • Android双屏是克隆模式,如果要在第二屏幕显示不同内容,需要自定义一个Presentation类1.设置权限&lt;!-- 显示系统窗口权限 --&gt;&lt;uses-permission android:name="android.permission.SYSTEM_...
  • Todo Agenda 是 Android 设备的主屏幕小部件。 每个小部件都有自己的设置并显示配置的日历事件和任务列表,以便您可以轻松了解到期、当前和即将到来的约会。 特征 没有广告。 免费和开源。 显示过去和未来选定时间...
  •     //挂起APP, 即 Home 键 监听 NotificationCenter.default.addObserver(self, selector:#selector(willResionActive),name: ... //重新回到app 监听 func didBecome(){ print("didi become") }  
  • 创建主屏幕控件----App Widget

    千次阅读 2013-03-10 17:02:29
    开发人员可使用App Widget API创建可加入到主屏幕中的小型控件。这些控件简单但功能强大,可向用户提供有关应用程序的补充信息,并提醒用户在必要时启动应用程序。  对有些类型的应用程序(如需要将状态或更新告知...
  • 选择屏幕中因为SELECT-OPTIONS无法判断两个输入值都为必填项,所以我在选择屏幕的PAI 事件中加入判断条件,但是直接调用MESSAGE E 回跳转界面,不能返回选择屏幕,所以用到以下方法。先设定MESSAGE类型为S,然后修改...
  • 最近做测试时发现一个特别奇怪的bug、在每次app退回后台的时候、当前app没有被kill、然后再次切回app时、会闪现一下主屏幕 最后锁定罪魁祸首、在设置返回按钮不显示文字的时候、用了如下此方法、造成闪现、将此...
  • 移动屏幕外的窗口返回屏幕

    千次阅读 2018-06-28 09:50:28
    这时就需要将屏幕外的窗口移回屏幕中,有两个方法:方法一:1.保持要移动的窗口为激活状态,按 Alt+空格 激活窗口菜单(因为窗口在屏幕外,所以看不到,没关系)2.按一下 m 键,然后按方向键左或右就可以移动窗口了...
  • 回到应用程序库,如果某个应用程序已经在您的主屏幕之一(可见或隐藏)中,则“添加到主屏幕”选项将不会出现在上下文菜单中。 相反,您将必须进入微动模式。 Locate an app in your iPhone’s App Library that’s ...
  • 用idea的 Ctrl+Alt+方向键 屏幕转动 没有返回到上次查看的位置 解决办法 一、按Ctrl + Alt + F12(或系统任务栏找到并鼠标右键)进入英特尔核心显卡管理界面 二、点击选项和支持 三、点击禁用,然后点击右下...
  • 之后,返回主屏幕,并确保您处于横向模式(iPad的最长尺寸从左到右)。 您应该在屏幕左侧看到“今日视图”,并在右侧看到应用程序图标。 Note that Today View widgets only appear on your Home screen in ...
  • 转到您要在其中添加小部件的iPhone的主屏幕页面,然后点击并按住主屏幕,直到进入主屏幕编辑模式(图标开始微动)。 Now, tap the “+” icon from the top-left corner of the screen. 现在,点击屏幕左上角的“ +”...
  • 现在,只要您运行的是iOS 14或更高版本,iPhone所有者就可以从主屏幕上删除和隐藏应用程序以及页面,并将其放入应用程序库中。 The App Library is Apple’s version of the app drawer. It’s available on the ...
  • 屏幕操作

    2019-08-10 16:35:02
    下将本来连接主机的屏幕称为主屏幕,将多余的屏幕称为次屏幕 连接之后电脑默认将 次屏幕复制主屏幕的内容 要想将次屏幕作为主屏幕的扩展要通过一下操作 操作(点击红色区域) 1、 2、 3、 4、下面是如何使用次...
  • 解决BUG:从Launcher3的菜单进入其他应用,然后按返回返回到待机界面,屏幕顶部和底部颜色发白的问题 修改文件:alps/packages/apps/Launcher3/src/com/android/launcher3/Launcher.java @@ -2628,6 +2628...
  • 一个干净,简约的主屏幕小部件,用于在Android上进行Spotify。 因为其他人的小部件似乎都无法正常工作。 拉请求欢迎! 下载 请点击。 如果应用程序更新了并且您想要它,请在这里返回以获取新链接! 屏幕截图 执照 ...
  • 或者,使用设备上的“主页”按钮返回主屏幕。 Now, when you install an app, you’ll need to go into the App Drawer to open the app. If you change your mind and want the Play Store to automatically ...
  • 屏幕 Dynpro

    千次阅读 2017-02-11 09:42:15
    对话屏幕Dynpro(SE51) 屏幕元素 屏幕属性 l 屏幕序号(Screen number)。四个数字组成的序列号,用于在程序中确定屏幕,该序号在同一个ABAP程序内部是唯一的。 l 屏幕类型(Screen type)。ABAP中的...
  • EXIT_SAPLAIST_003 是把Subscreen中的数据传回到 e_anlu 中, e_anlu把数据写到Table anlu中. 可以再在PBO中增加一段逻辑, AS03时只显示. MODULE  dispaly_field  OUTPUT .     ...
  • 冷高轮时间人人体形状造型数字动态时钟windows pc端 电脑屏幕保护 第一步:1....选择下载 下载到桌面后打开文件夹,将...屏保模式下晃动鼠标即可返回主屏幕。 支持系统:xp,win7 win8 win10 以及安装.net的windows系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,375
精华内容 63,350
关键字:

怎么返回主屏幕