iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android仿苹果关机界面实现代码
  • 261
分享到

Android仿苹果关机界面实现代码

android关机界面roi 2023-05-30 20:05:17 261人浏览 八月长安
摘要

本文实例为大家分享了Android仿苹果关机界面的具体代码,供大家参考,具体内容如下主class 用来控制viewdialog的显示package com.android.server.policy; import android.ap

本文实例为大家分享了Android仿苹果关机界面的具体代码,供大家参考,具体内容如下

主class 用来控制viewdialog的显示

package com.android.server.policy;   import android.app.AlertDialog;   import android.app.StatusBarManager;   import android.os.Handler;   import android.os.Message;   import android.os.RemoteException;   import android.os.ServiceManager;   import android.os.SystemClock;   import android.util.Log;   import android.view.IWindowManager;   import android.view.KeyEvent;   import android.view.LayoutInflater;   import android.view.View;   import android.view.Window;   import android.view.WindowManager;   import android.view.animation.Animation;   import android.view.animation.TranslateAnimation;   import android.widget.Button;   import android.widget.LinearLayout;   import android.content.BroadcastReceiver;   import android.content.Context;   import android.content.Intent;   import android.content.IntentFilter;   //import android.widget.SlideBar;   import com.android.internal.R;   import android.widget.ImageView;   import android.view.MotionEvent;   import android.view.View.OnTouchListener;   import android.util.Log;   import android.widget.FrameLayout;   import android.graphics.canvas;   import android.graphics.Color;   import android.graphics.Paint;   import android.graphics.Path;   import android.graphics.RectF;   import android.graphics.Bitmap;   import android.graphics.PixelFORMat;   import android.graphics.drawable.Drawable;   import android.util.AttributeSet;   import android.graphics.drawable.BitmapDrawable;   import android.view.Display;   import android.view.WindowManager;   //import com.android.internal.widget.SlideView;   //import android.view.WindowManagerPolicy.WindowManagerFuncs;   import android.view.WindowManagerPolicy.WindowManagerFuncs;   import android.view.Gravity;   import android.app.WallpaperManager;   import android.graphics.Bitmap.Config;   import android.graphics.drawable.BitmapDrawable;   //added by wanGChengju for shutdown   public class IphoneShutdownDialog {     private static String TAG = "IphoneShutdownDialog";     private int mStyleId;     private boolean mIsRestore = false;     private View view ;     private StatusBarManager mStatusBar;     private Context mContext;     private final WindowManagerFuncs mWindowManagerFuncs;//added by wangchengju for shutdown     private static final int MESSAGE_DISMISS = 0;     static final String SYSTEM_DIALOG_REASON_KEY = "reason";     static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";     int mdownx,mdowny;     boolean ispowerdown=false;     private WallpaperManager wpm;      private FrameLayout mgradientView;     private WindowManager mWindowManager;     private WindowManager.LayoutParams mFrameLayoutParams;     private FrameLayout mFrameLayout;     public IphoneShutdownDialog(Context context, WindowManagerFuncs windowManagerFuncs)      {       Log.d(TAG,"denghaigui construction");       mContext = context;       mWindowManagerFuncs = windowManagerFuncs;//added by wangchengju for shutdown       mStatusBar = (StatusBarManager)mContext.getSystemService(Context.STATUS_BAR_SERVICE);       IntentFilter filter = new IntentFilter();       filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);       filter.addAction(Intent.ACTION_SCREEN_OFF);       filter.addAction(Intent.ACTION_WALLPAPER_CHANGED);       context.reGISterReceiver(mBroadcastReceiver, filter);         wpm = (WallpaperManager) mContext.getSystemService(mContext.WALLPAPER_SERVICE);     }      public Bitmap drawableToBitmap(Drawable drawable) {       Bitmap bitmap = Bitmap.createBitmap(       drawable.getIntrinsicWidth(),       drawable.getIntrinsicHeight(),       drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888       : Bitmap.Config.RGB_565);       Canvas canvas = new Canvas(bitmap);       // canvas.setBitmap(bitmap);       drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),           drawable.getIntrinsicHeight());       drawable.draw(canvas);       return bitmap;     }              private void initwindowsView() {       if (mWindowManager == null)         mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);       mFrameLayoutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);       mFrameLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;//       mFrameLayoutParams.format = PixelFormat.RGBA_8888;       resetWindowParamsFlags();       mFrameLayoutParams.gravity = Gravity.TOP | Gravity.START;       mFrameLayout = new FrameLayout(mContext);          mFrameLayout.setSystemUiVisibility(         View.SYSTEM_UI_FLAG_LAYOUT_STABLE            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);       mWindowManager.addView(mFrameLayout, mFrameLayoutParams);     }       private void resetWindowParamsFlags() {      mFrameLayoutParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON           | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD           | WindowManager.LayoutParams.FLAG_FULLSCREEN           | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE           | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS           | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;     }     private void removeView(){        mFrameLayout.removeAllViews();          mWindowManager.removeViewImmediate(mFrameLayout);         view=null;         mFrameLayout = null;          mWindowManager = null;        }     public void showDialog(boolean keyguardShowing)     {     Log.d("PhoneShutdownDialog","denghaigui showDialog");       initWindowsView();       //create Dialog       if(view == null){          LayoutInflater inflater = LayoutInflater.from(mContext) ;          view = inflater.inflate(R.layout.iphone_shutdown_dialog, null, false) ;           mFrameLayout.addView(view);        Bitmap image = drawableToBitmap(wpm.getDrawable());         image = Blur.fastblur(mContext, image,25);         BitmapDrawable bt = new BitmapDrawable(image);         Blur.setDrawable(bt);       }else{         Log.d("PhoneShutdownDialog","denghaigui view is not null");      }            Drawable bt = Blur.getDrawable();       if(bt!=null){         view.setBackground(bt);       }      mgradientView = (FrameLayout)view.findViewById(R.id.gradientView_layout);      FrameLayout slide_shutdown = (FrameLayout)view.findViewById(R.id.slide_layout);      SlideView mslideview=new SlideView(mContext);      android.widget.FrameLayout.LayoutParams layoutparams = new android.widget.FrameLayout.LayoutParams(524, 150,Gravity.CENTER);      slide_shutdown.addView(mslideview,0,layoutparams);       final LinearLayout cancelShutdown = (LinearLayout)view.findViewById(R.id.cancelShutdown) ;       Button cancelShutdownBtn = (Button)view.findViewById(R.id.cancelShutdownBtn) ;       cancelShutdownBtn.setPressed(false);       cancelShutdownBtn.setOnClickListener(new View.OnClickListener() {         public void onClick(View v) {           removeView();          // playCloseAnimation(shutdownTab, cancelShutdown) ;         }       }) ;       //play open animation   //    playOpenAnimation(shutdownTab, cancelShutdown) ;       mStatusBar.disable(StatusBarManager.DISABLE_EXPAND);     }     public void dismissDialog()     {       removeView();       mStatusBar.disable(StatusBarManager.DISABLE_NONE);     }     private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {       public void onReceive(Context context, Intent intent) {         String action = intent.getAction();         if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)             || Intent.ACTION_SCREEN_OFF.equals(action)) {           String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);           if (!SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS.equals(reason)) {             mHandler.sendEmptyMessage(MESSAGE_DISMISS);           }         }          if(action.equals(Intent.ACTION_WALLPAPER_CHANGED)){           Bitmap image = drawableToBitmap(wpm.getDrawable());           image = Blur.fastblur(context, image,25);           BitmapDrawable bt = new BitmapDrawable(image);           Blur.setDrawable(bt);         }       }     };     private Handler mHandler = new Handler() {       public void handleMessage(Message msg) {         if (msg.what == MESSAGE_DISMISS) {           if (view != null) {             dismissDialog();           }         }       }     };     public class SlideView extends View     {     public float mTouchX;      private Drawable mSlideDrawable;     public float mDownX,mdx;      private boolean isPower=false;     private Context mContext;     public SlideView(Context context, AttributeSet attrs) {       this(context);     }     public SlideView(Context context) {       super(context);       mContext=context;       mSlideDrawable = context.getResources().getDrawable(R.drawable.slide_touch_icon);     }     @Override     protected void onDraw(Canvas canvas) {       super.onDraw(canvas);       if(mdx>374)mdx=374;       if(mdx<0)mdx=0;       Paint mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);       mPaint.setColor(Color.WHITE);       mPaint.setAlpha(200);       canvas.save();       Path path=new Path();       RectF rect=new RectF(mdx, 0, 434, 120);      canvas.drawRoundRect(rect, 72, 72, mPaint);       canvas.restore();       canvas.drawBitmap(((BitmapDrawable) mSlideDrawable).getBitmap(), mdx+5, 5,null);      }     @Override     public boolean onTouchEvent(MotionEvent ev) {           int action = ev.getAction();       switch (action) {         case MotionEvent.ACTION_DOWN:            mDownX=ev.getX();            isPower=true;           //mgradientView.setVisibility(8);          break;               case MotionEvent.ACTION_MOVE:             mgradientView.setVisibility(8);           mTouchX = ev.getX();           if(mTouchX <= mDownX)           {             mdx=0;             mgradientView.setVisibility(0);           }           else             mdx=(mTouchX-mDownX);           invalidate();            if(mdx>374)             isPower=false;           else             isPower=true;         break;         case MotionEvent.ACTION_UP:         case MotionEvent.ACTION_CANCEL:             if(isPower==true){             mgradientView.setVisibility(0);             mdx=0;             invalidate();            }           else             mWindowManagerFuncs.shutdown(false);           break;      }       return true;     }   }   } 

--结束END--

本文标题: Android仿苹果关机界面实现代码

本文链接: https://www.lsjlt.com/news/221020.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android仿苹果关机界面实现代码
    本文实例为大家分享了Android仿苹果关机界面的具体代码,供大家参考,具体内容如下主class 用来控制viewdialog的显示package com.android.server.policy; import android.ap...
    99+
    2023-05-30
    android 关机界面 roi
  • Android ListView实现仿微信聊天界面
    本篇内容主要讲解“Android ListView实现仿微信聊天界面”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android ListView实现仿微信聊天界面”吧!Android List...
    99+
    2023-06-20
  • Android开发仿IOS滑动开关实现代码
    Android开发仿IOS滑动开关实现代码Android与iOS相比,ios好多控件都是自带的,而android需要使用自定义来实现。今天说的是ios的滑动开关,我层看到好多博客都是通过自定义ToggleButton实现的。这里我通过自定义...
    99+
    2023-05-31
    android ios 滑动开关
  • iOS仿微信图片分享界面实现代码
    以下是一个iOS仿微信图片分享界面的实现代码的示例:```swiftimport UIKitclass ViewController: UIViewController, UICollectionViewDelegate, UIColl...
    99+
    2023-08-11
    iOS
  • android 仿微信demo——微信主界面实现
    目录主界面实现测试总结 以往文章中实现微信启动页,登录注册功能,此基础上继续完善仿微信功能。 主界面实现 (1)整体采用RelativeLayout相对布局 (2)最上面是too...
    99+
    2024-04-02
  • Android ListView自定义Adapter实现仿QQ界面
    PS:listview中有一些简单使用的适配器,如:SimpleAdapter:构造方法SimpleAdapter(Context context,List<Map<String,?>> data,reStr...
    99+
    2023-05-30
    listview adapter
  • Android仿微信输入框效果的实现代码
    仿微信输入框效果图:输入框:<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout...
    99+
    2023-05-31
    android 输入框
  • Android仿拉手网团购App我的收藏界面实例代码
    先给大家展示效果图,如果感觉还不错,请参考实例代码效果图如下所示:具体代码如下:private void initData() { BmobManager.getInstance(new BmobQueryCallback() { @Ov...
    99+
    2023-05-31
    android 拉手团购网 pp
  • uniapp模仿微信实现聊天界面的示例代码
    目录项目演示前言主界面chat.vue中引入的js文件chat.vue中引入的组件submit.vue中引入的组件最后项目演示 前言 我是看B站的视频一个一个敲的,讲的还不错。可以...
    99+
    2024-04-02
  • Android Studio实现仿微信APP门户界面详解及源码
    目录前言界面分析界面动态实现代码静态界面实现总结前言 你好! 本文章主要介绍如何用Android Studio制作简易的门户界面,主要说明框架的各部分功能与实现过程,结尾处附有源码。...
    99+
    2024-04-02
  • android 仿微信demo——微信启动界面实现
    目录微信启动界面创建项目微信启动界面实现测试总结微信启动界面 创建项目 android studio创建移动端项目 微信启动界面实现 当第一次点击微信时会看到微信出现启动界...
    99+
    2024-04-02
  • android实现欢迎界面效果
    现在许多流行的软件中都有欢迎界面,今天就介绍一下欢迎界面的制作,由于界面涉及到页面的滑动,因此要采用ViewPager,sdk在4.0一下的都要引入“android-support-...
    99+
    2024-04-02
  • Android 实现ViewPager边界回弹效果实例代码
    废话不多说了,直接给大家贴代码了,具体代码如下所示:public class BounceBackViewPager extends ViewPager { private int currentPosition = 0; private ...
    99+
    2023-05-31
    android viewpager 回弹
  • Android怎么实现3D界面效果
    要实现3D界面效果,可以通过以下几种方法:1. 使用OpenGL ES:Android支持OpenGL ES库,可以使用OpenGL...
    99+
    2023-08-24
    Android
  • Android仿新浪微博发送菜单界面的实现
    目录效果图自定义Dialog布局文件Style工具方法接口效果图 接下来就是一波贴代码的过程 自定义Dialog public class SinaSendView exten...
    99+
    2024-04-02
  • android 仿微信demo——微信消息界面实现(移动端)
    目录移动端微信消息页实现总结移动端微信消息页实现 在上一篇中主界面实现说过微信四个页面中间都是是fragment的,并且四个fragment的布局都还没实现,所以这一篇主要实现微信...
    99+
    2024-04-02
  • android 仿微信demo——微信消息界面实现(服务端)
    目录服务端微信消息页实现测试总结 上一篇实现了移动端微信消息界面功能,以此为基础继续完善服务端功能 服务端微信消息页实现 微信消息界面的实现,和登录,注册是类似的,无非就是接受客...
    99+
    2024-04-02
  • Android中怎么实现仿iOS侧滑退出当前界面功能
    小编给大家分享一下Android中怎么实现仿iOS侧滑退出当前界面功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先看下效果图:分析:(1)要想模仿ios的这...
    99+
    2023-05-30
  • PyQt5实现界面(页面)跳转的示例代码
    网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下 一、首先是主界面 # -*- coding: utf-8 -*- # Form im...
    99+
    2024-04-02
  • Android实现水波纹效果实例代码
    效果图 attrs.xml 自定义属性 <declare-styleable name="RippleAnimationView"> <attr...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作