`

让Android不播放关机动画,而是显示一个关机进度条的方法

 
阅读更多
修改文件:
frameworks/base/core/java/com/android/internal/app/ShutdownThread.java
synchronized (mEnableAnimatingSync) {  
        if(!mEnableAnimating){
            sInstance.mPowerManager.setBacklightBrightness(Power.BRIGHTNESS_DIM);
        } else {
        	//add by bcf,将播放动画的BOOLEAN值设置为假,就不播放动画了,而是显示一个进度条+正在关机的字样
        	mShutOffAnimation=false;  
         //add end
          if (mShutOffAnimation) {
                boolean isRotaionEnabled = false;   
                try {
                    isRotaionEnabled = Settings.System.getInt(sInstance.mContext.getContentResolver(), 
                            Settings.System.ACCELEROMETER_ROTATION, 1) != 0;
                    if (isRotaionEnabled) {
                        Settings.System.putInt(sInstance.mContext.getContentResolver(),
                                Settings.System.ACCELEROMETER_ROTATION, 0);
                        Settings.System.putInt(sInstance.mContext.getContentResolver(), 
                                Settings.System.ACCELEROMETER_ROTATION_RESTORE, 1);
                    }
                } catch (NullPointerException ex) {
                    Log.e(TAG, "check Rotation: sInstance.mContext object is null when get Rotation");
                  
                }           
                beginAnimationTime = SystemClock.elapsedRealtime() + MIN_SHUTDOWN_ANIMATION_PLAY_TIME;
                 // +MediaTek 2012-02-25 Disable key dispatch
                try {
                    final IWindowManager wm = IWindowManager.Stub.asInterface(
                            ServiceManager.getService(Context.WINDOW_SERVICE));
                    wm.setEventDispatching(false);
                } catch (RemoteException e) {}
                // -MediaTek 2012-02-25 Disable key dispatch                              
                startBootAnimation();
            } else {
                pd = new ProgressDialog(context); 
                pd.setTitle(context.getText(com.android.internal.R.string.power_off));
                pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));
                pd.setIndeterminate(true);
                pd.setCancelable(false);
                pd.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);

                /* To fix video+UI+blur flick issue */
                pd.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

                pd.show();
            }
            /* set screen brightness off after shutdownThread start */
            sInstance.mHandler.postDelayed(mDelayDim, screen_turn_off_time); 
        }
   } 
分享到:
评论

相关推荐

    android 带动画进度条.rar

    在"android 带动画进度条.rar"这个压缩包中,包含了一个针对Android 5.0及以上版本的动画式进度条实现。这种进度条不仅显示了任务的当前进度,还通过动画效果提升了用户体验,使得等待过程不那么枯燥。 首先,我们...

    Android 水平垂直圆形菊花进度条加载动画progress bar

    圆形进度条常用于显示一个循环或无限的任务进度,如下载、刷新等。Android提供了`android.R.style.Widget_Material_CircularProgressIndicator`风格的圆形进度条。如果需要自定义颜色、大小等,可以使用自定义View...

    Android应用开发mediaplayer播放音频,带有进度条

    SeekBar是Android中的一个进度条控件,用于显示和调整进度。在音频播放器中,我们可以利用`MediaPlayer.getCurrentPosition()`获取当前播放位置,`MediaPlayer.getDuration()`获取总时长,然后更新SeekBar的进度。 ...

    安卓Android多阶段进度条progress bar附带动画效果

    本教程将重点介绍如何实现一个带有动画效果的多阶段进度条。 首先,我们需要创建一个自定义的Progress Bar。在Android Studio中,你可以创建一个新的XML布局文件来定义这个组件。在`res/layout`目录下,创建一个名...

    Android自定义带动画圆环进度条

    本文将深入探讨如何在Android中创建一个自定义的带有动画效果的圆环进度条,这将帮助开发者们构建更加美观且动态的用户界面。 首先,我们需要了解圆环进度条的基本概念。它是一种特殊的进度条,形状为圆形,通常...

    Android中显示在标题上的进度条

    这就涉及到了如何在Android的标题栏上显示一个进度条,以及如何与后台任务进行协调来更新这个进度条。本篇将详细讲解这一知识点。 首先,我们需要理解Android中的进度条(ProgressBar)。进度条是Android提供的一个...

    android通知栏常用方法以及进度条显示

    至于标签"清除通知栏",Android提供了一个方便的方法让用户清除通知,即`Notification.FLAG_AUTO_CANCEL`。当用户点击通知时,设置了此标志的`Notification`会被自动清除。此外,还可以通过`NotificationManager....

    Android动画之——圆形进度条加波浪线

    例如,可以设置一个定时器,每隔一定时间更新波浪线的位置,然后调用View的invalidate方法强制重绘,以达到动画效果。 为了更好地控制动画,我们可以定义一个波浪模型类,包含波浪的当前位置、高度、频率等属性,...

    Android-CircularProgressBar一个Android圆形进度条

    `CircularProgressBar`是一个专门为Android平台设计的圆形进度条组件,它允许开发者创建美观且自定义化的圆形进度显示效果。 `CircularProgressBar`的核心功能包括: 1. **自定义样式**:此组件提供了丰富的样式...

    android 进度条 各种样式

    你可以创建一个新的样式,指定`progressBarStyle`属性,比如`android:style/Widget.ProgressBar.Horizontal`用于水平进度条,`android:style/Widget.ProgressBar.Inverse`用于逆向显示的进度条。此外,还可以通过`...

    安卓进度条loadingprogress相关-自定义进度条自定义逐帧动画进度条让自己的进度条更美观大方。.rar

    总结来说,这个压缩包提供了一个关于如何在Android中自定义进度条,尤其是通过逐帧动画实现动态加载效果的实例。开发者可以通过研究源码,学习到如何结合自定义控件和动画来提升应用的视觉表现,同时也可以了解如何...

    android音乐播放器中的进度条(音量控制+进度)

    在Android平台上开发一款音乐播放器应用时,进度条是一个至关重要的元素,它通常包含两个功能:音量控制和播放进度调整。在这个专题中,我们将深入探讨如何实现这两个关键功能。 首先,音量控制是Android设备上任何...

    Android 修改系统关机动画的实现

    为了让关机动画变得个性化,开发者可以替换这个`ProgressDialog`为一个自定义的全屏对话框`Dialog`。这个自定义的`Dialog`需要具备全屏显示的能力,即通过`android.R.style.Theme_Black_NoTitleBar_Fullscreen`这个...

    Android 电池电量进度条,上下滚动图片的进度条(battery)

    在Android开发中,创建一个模拟真实手机电池电量进度的组件是一项常见的需求,它可以提供用户友好的界面反馈。本文将深入探讨如何实现一个上下滚动的电池电量进度条,并根据电量百分比进行动态更新。 首先,我们...

    android 竖直自定义进度条 带文字竖直进度条 类似电量显示

    总的来说,实现一个竖直自定义进度条并带文字显示的过程涉及到了Android的自定义View、样式配置、XML drawable以及布局管理等多个方面。理解这些知识点可以帮助开发者更自由地设计和定制Android应用的界面,提供更...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    在Android开发中,文件复制和进度条的显示是常见的需求,尤其在移动应用中,用户可能需要将数据从一个位置移动到另一个位置,或者在后台下载文件时展示进度。`ProgressDialog`是Android SDK提供的一种对话框组件,...

    Android-一个Android进度条通过单一方法与ViewPager相关联

    3. 创建一个OnPageChangeListener,并在`onPageSelected()`方法中更新进度条的可见性和进度值。 ```java viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void ...

    jquery轻量级进度条 progressbar 带动画显示的进度过程的jquery进度条特效

    总结来说,"jquery轻量级进度条 progressbar 带动画显示的进度过程的jquery进度条特效"是一个使用jQuery创建的动态、轻量级的UI组件,它可以增强用户体验,提供视觉上的互动反馈。通过结合CSS样式和JavaScript,我们...

    android 进度条 螺纹渐变

    在Android开发中,进度条(ProgressBar)是一种常见的UI组件,用于显示任务的进度或等待状态。在本项目中,我们关注的是一个独特的进度条实现,即“螺纹渐变”效果。这种效果使得进度条在视觉上更具吸引力,能够更好...

    android 水平进度条源码

    比如,我们可以修改`android:progressDrawable`属性来自定义进度条的外观,或者通过`android:indeterminate`设置是否显示不确定模式(即旋转动画)。 对于"DialogProject"这个压缩包文件,可能包含了一个使用进度条...

Global site tag (gtag.js) - Google Analytics