亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

android桌面懸浮窗顯示錄屏?xí)r間控制效果

2019-10-21 21:49:53
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了android桌面懸浮窗,實(shí)現(xiàn)錄屏?xí)r間控制顯示效果的具體代碼,供大家參考,具體內(nèi)容如下

android,桌面,懸浮窗,錄屏

懸浮窗效果如上圖所示:

很簡單的一個布局直接上代碼

懸浮窗布局如下record_screen_time_float.xml  

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="wrap_content"   android:layout_height="wrap_content">    <LinearLayout     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:background="@drawable/corners_bg"     android:paddingBottom="3dp"     android:paddingTop="3dp"     android:paddingLeft="15dp"     android:paddingRight="8dp"     android:layout_gravity="center"     android:gravity="center"     android:orientation="horizontal">      <TextView       android:id="@+id/record_time"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:text="00:00"       android:textColor="#ffffff"       android:textSize="10dp" />     <View       android:layout_width="2dp"       android:layout_height="match_parent"       android:layout_marginLeft="5dp"       android:layout_marginRight="5dp"       android:textColor="#ffffff" />     <LinearLayout       android:id="@+id/stop_record"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:layout_gravity="center"       android:gravity="center"       android:orientation="horizontal">       <ImageView         android:id="@+id/record_hint_button"         android:layout_width="10dp"         android:layout_height="10dp"         android:layout_marginRight="5dp"         android:background="#FF4040" />        <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="結(jié)束"         android:textColor="#ffffff"         android:textSize="10dp" />     </LinearLayout>   </LinearLayout> </LinearLayout> 

懸浮窗是在service中拉起可以根據(jù)個人需要修改

package com.android.systemui;   import android.annotation.TargetApi; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.Binder; import android.os.Build; import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.support.annotation.RequiresApi; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.LinearInterpolator;   import android.graphics.PixelFormat; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import android.view.View.OnTouchListener; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import com.android.systemui.R; import android.util.Log; import java.io.File; import java.io.IOException;  public class ScreenRecordService extends Service implements Handler.Callback {     private final String TAG = "ScreenRecordService";   private Handler mHandler;   //已經(jīng)錄制多少秒了   private int mRecordSeconds = 0;   private static final int MSG_TYPE_COUNT_DOWN = 110;    /**    * 定義浮動窗口布局    */   LinearLayout mlayout;   TextView recordTime;   /**    * 懸浮窗控件    */   ImageView recordHintButton;   LinearLayout stopRecord;   /**    * 懸浮窗的布局    */   WindowManager.LayoutParams wmParams;   LayoutInflater inflater;   /**    * 創(chuàng)建浮動窗口設(shè)置布局參數(shù)的對象    */   WindowManager mWindowManager;     //觸摸監(jiān)聽器   GestureDetector mGestureDetector;     FloatingListener mFloatingListener;    @Override   public void onCreate() {     super.onCreate();    initWindow();//設(shè)置窗口的參數(shù)    initFloating();//設(shè)置懸浮窗圖標(biāo)  }   @Override   public void onDestroy() {     super.onDestroy();     try {       if (mlayout != null) {         // 移除懸浮窗口         mWindowManager.removeView(mlayout);       }     } catch (Exception e) {       Log.e(TAG, "not attached to window manager");     }   }    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)   @Override   public boolean handleMessage(Message msg) {     switch (msg.what) {        case MSG_TYPE_COUNT_DOWN: {          mRecordSeconds++;         int minute = 0, second = 0;         if (mRecordSeconds >= 60) {           minute = mRecordSeconds / 60;           second = mRecordSeconds % 60;         } else {           second = mRecordSeconds;         } String timeTip = ""+minute+":"+second;         recordTime.setText(timeTip);       }         break;       }     }     return true;   }    /**    * 初始化windowManager    */   private void initWindow() {     if (mWindowManager == null) {       mWindowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE);     }     wmParams = getParams(wmParams);//設(shè)置好懸浮窗的參數(shù)     // 懸浮窗默認(rèn)顯示以左上角為起始坐標(biāo)     wmParams.gravity = Gravity.LEFT | Gravity.TOP;     //懸浮窗的開始位置,因?yàn)樵O(shè)置的是從左上角開始,所以屏幕左上角是x=0;y=0     wmParams.x = 0;     wmParams.y = 0;     //得到容器,通過這個inflater來獲得懸浮窗控件     if (inflater == null) {       inflater = LayoutInflater.from(getApplication());     }     // 獲取浮動窗口視圖所在布局     if (mlayout == null) {       mlayout = (LinearLayout) inflater.inflate(R.layout.record_screen_time_float, null);     }     // 添加懸浮窗的視圖     mWindowManager.addView(mlayout, wmParams);   }     /**    * 對windowManager進(jìn)行設(shè)置    *    * @param wmParams    * @return    */   public WindowManager.LayoutParams getParams(WindowManager.LayoutParams wmParams) {     if (wmParams == null) {       wmParams = new WindowManager.LayoutParams();     }     //設(shè)置window type 下面變量2002是在屏幕區(qū)域顯示,2003則可以顯示在狀態(tài)欄之上     //wmParams.type = LayoutParams.TYPE_PHONE;     //wmParams.type = LayoutParams.TYPE_SYSTEM_ALERT;     wmParams.type = LayoutParams.TYPE_SYSTEM_ERROR;     //設(shè)置圖片格式,效果為背景透明     wmParams.format = PixelFormat.RGBA_8888;     //設(shè)置浮動窗口不可聚焦(實(shí)現(xiàn)操作除浮動窗口外的其他可見窗口的操作)     //wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;     //設(shè)置可以顯示在狀態(tài)欄上     wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |         WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR |         WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;     //設(shè)置懸浮窗口長寬數(shù)據(jù)     wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;     wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;     return wmParams;   }    /**    * 找到懸浮窗的圖標(biāo),并且設(shè)置事件    * 設(shè)置懸浮窗的點(diǎn)擊、滑動事件    */   private void initFloating() {     recordTime = (TextView) mlayout.findViewById(R.id.record_time);     recordHintButton = (ImageView) mlayout.findViewById(R.id.record_hint_button);     setFlickerAnimation(recordHintButton);     stopRecord = (LinearLayout) mlayout.findViewById(R.id.stop_record);     mlayout.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {         Log.d(TAG, "OnClickListener");         ScreenUtil.stopScreenRecord(ScreenRecordService.this);       }     });     if (mGestureDetector == null) {       mGestureDetector = new GestureDetector(this, new MyOnGestureListener());     }     if(mFloatingListener == null){       //設(shè)置監(jiān)聽器       mFloatingListener = new FloatingListener();     }     mlayout.setOnTouchListener(mFloatingListener);     stopRecord.setOnTouchListener(mFloatingListener);   } /×  ×錄屏狀態(tài)顯示(閃爍效果)  ×/   private void setFlickerAnimation(ImageView iv_chat_head) {     final Animation animation = new AlphaAnimation(1, 0); // Change alpha from fully visible to invisible     animation.setDuration(500); // duration - half a second     animation.setInterpolator(new LinearInterpolator()); // do not alter animation rate     animation.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely     animation.setRepeatMode(Animation.REVERSE); //     iv_chat_head.setAnimation(animation);   }     //開始觸控的坐標(biāo),移動時的坐標(biāo)(相對于屏幕左上角的坐標(biāo))   private int mTouchStartX, mTouchStartY, mTouchCurrentX, mTouchCurrentY;   //開始時的坐標(biāo)和結(jié)束時的坐標(biāo)(相對于自身控件的坐標(biāo))   private int mStartX, mStartY, mStopX, mStopY;   private boolean isMove;//判斷懸浮窗是否移動     /**    * 懸浮窗監(jiān)聽器    */   private class FloatingListener implements OnTouchListener {      @Override     public boolean onTouch(View arg0, MotionEvent event) {        int action = event.getAction();       switch (action) {         case MotionEvent.ACTION_DOWN:           isMove = false;           mTouchStartX = (int) event.getRawX();           mTouchStartY = (int) event.getRawY();           mStartX = (int) event.getX();           mStartY = (int) event.getY();           break;         case MotionEvent.ACTION_MOVE:           mTouchCurrentX = (int) event.getRawX();           mTouchCurrentY = (int) event.getRawY();           wmParams.x += mTouchCurrentX - mTouchStartX;           wmParams.y += mTouchCurrentY - mTouchStartY;           if (mlayout != null) {             mWindowManager.updateViewLayout(mlayout, wmParams);           }           mTouchStartX = mTouchCurrentX;           mTouchStartY = mTouchCurrentY;           break;         case MotionEvent.ACTION_UP:           mStopX = (int) event.getX();           mStopY = (int) event.getY();           if (Math.abs(mStartX - mStopX) >= 1 || Math.abs(mStartY - mStopY) >= 1) {             isMove = true;           }           break;       }       return mGestureDetector.onTouchEvent(event); //此處必須返回false,否則OnClickListener獲取不到監(jiān)聽     }   }    /**    * 自定義的手勢監(jiān)聽類    */   class MyOnGestureListener extends SimpleOnGestureListener {     @Override     public boolean onSingleTapConfirmed(MotionEvent e) {       if (!isMove) {         System.out.println("onclick");       }       return super.onSingleTapConfirmed(e);     }   }  } 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
激情高潮到大叫狂喷水| 一区二区久久| 日韩女在线观看| 国产精品中文字幕在线| 亚洲美女自拍偷拍| 日本五级黄色片| www.啪啪.com| 五十度飞在线播放| 久久成人精品无人区| 中文字幕一区二区三区中文字幕| 亚洲经典一区二区三区| 日韩精品中文字幕吗一区二区| 91狠狠综合久久久久久| 国产目拍亚洲精品99久久精品| 九九热精品视频在线| 欧美日韩国产综合草草| 色资源二区在线视频| 国产aⅴ夜夜欢一区二区三区| 神马久久久久久久久久| 欧美精品tushy高清| 一个人免费观看日本www视频| 九色成人在线| 精华区一区二区三区| av日韩亚洲| 欧美aaaaa成人免费观看视频| 欧美日韩hd| 亚洲精品久久久久久久久| 国产精品一线天粉嫩av| 韩国主播福利视频一区二区三区| 91九色鹿精品国产综合久久香蕉| 亚洲免费成人在线视频| 国产精品白丝jk白祙喷水网站| 国内自拍视频在线观看| **毛片在线网站| jizzjizz日本护士视频| 黄色一二三区| 182午夜视频| 亚洲国产网址| 日韩国产一级片| 999久久久国产999久久久| 欧美 日韩 激情| 国产精品免费无遮挡无码永久视频| 麻豆av在线导航| 国产一卡2卡3卡4卡网站免费| 中文一区二区完整视频在线观看| 99国产一区| 欧美国产亚洲另类动漫| 欧美高清视频在线观看mv| 久久99久久99精品蜜柚传媒| 国产真实乱偷精品视频| 午夜影院免费在线观看| 最新在线观看av网站| 亚洲有码转帖| 伊人久久亚洲综合| 国产偷倩在线播放| 四虎永久在线精品无码视频| 国产精品剧情一区二区三区| 韩日午夜在线资源一区二区| 精品久久国产老人久久综合| 黄色网战在线观看| 中文字幕乱妇无码av在线| 日韩av片网站| 亚洲免费成人在线视频| 国产手机视频精品| 国产粉嫩在线观看| 欧美高清在线精品一区| 欧美国产日韩在线观看| 日韩欧美精品三级| 成人高清免费| 亚洲一区精品在线| 久久国产精品偷| 图片区亚洲欧美小说区| 久久久久99精品成人片| 无码人妻精品一区二区三区在线| wwwww亚洲| 免费成人av资源网| 五月婷婷在线观看| 欧美国产三区| 日本精品久久久久影院| 成年人精品视频| xxx在线视频| 国产经典自拍视频在线观看| 亚洲一区二区三区四区在线| 成人精品在线观看视频| 菠萝蜜影院一区二区免费| 国内精品视频久久| 国产精品三级av| 桃子视频成人app| 一级精品视频在线观看宜春院| 夜色激情一区二区| 三级视频中文字幕| 性色88av老女人视频| 粉嫩精品久久99综合一区| 欧美日韩一级在线观看| 美女福利网站视频在线观看| 国产激情精品一区二区三区| 一卡二卡三卡四卡| 国产成人精品a视频一区| 欧美一区二区三区在线免费观看| 97se亚洲国产一区二区三区| 久9久9色综合| 久草综合在线视频| 国产伦精品一区二区三区四区免费| 91精品在线视频观看| 日韩一级片网站| 国产亚洲欧美精品久久久久久| 欧美日韩不卡中文字幕在线| 亚洲一区二区三区在线免费| 国产日韩综合一区二区性色av| 欧美日韩国产一区二区三区不卡| 18禁网站免费无遮挡无码中文| 一区二区三区视频免费观看| 亚洲va国产va天堂va久久| 4hu永久免费入口| 91tv亚洲精品香蕉国产一区7ujn| 欧美少妇一区| 成人国产激情在线| 欧美另类变人与禽xxxxx| 欧美撒尿777hd撒尿| www.午夜av| 国产亚洲综合av| 色播亚洲婷婷| 欧洲国内综合视频| 免费毛片视频网站| 成人精品中文字幕| 美女精品视频| 久久aⅴ乱码一区二区三区| 欧美bbbbbbbbbbbb精品| 色综合久久av| 99热国产在线中文| 日韩电影在线看| 韩国一区二区三区美女美女秀| 精品一区二区三区四区五区六区| 国模私拍一区二区国模曼安| 亚洲成年人在线观看| 三年片观看免费观看大全视频下载| 亚洲一区电影777| 精品国产高清a毛片无毒不卡| 麻豆成人在线看| 黑人精品无码一区二区三区AV| 裸体在线国模精品偷拍| 欧美日韩午夜影院| 国产精品福利无圣光在线一区| 久久综合九色综合久| 午夜影院在线观看欧美| 欧美丰满熟妇bbb久久久| 国偷自产av一区二区三区麻豆| 久久久久久一二三区| 偷偷要91色婷婷| 国产精品日韩精品在线播放| 亚洲高清成人| 欧美精品亚洲精品日韩精品| 蜜桃视频在线观看www| 午夜精品电影在线观看| 国产精品成熟老女人| 久久亚洲国产精品成人av秋霞| 欧美第一黄网免费网站| h片在线观看免费| 色综合网色综合| 91最新在线视频| 色综合久久久久网| 黑人40厘米全进去| 色图在线观看| 干b视频在线观看| 影音先锋在线国产| 亚洲av永久无码国产精品久久| 国产亚洲一本大道中文在线| 一级黄色片播放| 四季av中文字幕| 国产精品久久久久久妇女6080| 黑人精品无码一区二区三区AV| 一二三区精品| 国产一级精品毛片| 风间由美中文字幕在线看视频国产欧美| 超薄肉色丝袜一二三| 欧美精品vⅰdeose4hd| 5566先锋影音夜色资源站在线观看| 国产a级黄色大片| 日本少妇aaa| jizz性欧美| 亚洲人成网站777色婷婷| 中文字幕+乱码+中文字幕| 欧美综合天天夜夜久久| 亚洲激情婷婷| 欧美亚洲国产怡红院影院| 国产精品极品国产中出| 亚洲精品97久久中文字幕| 国产在线视频综合| 99国产精品99久久久久久粉嫩| 一本到三区不卡视频| 亚洲精品成人av| 裸体一区二区| 日韩av成人在线观看| 精品91在线| 日韩精品亚洲元码| 欧美日韩久久久久| 国产精品高颜值在线观看| 国产精品一二三视频| 成人不用播放器| 黄色激情小视频| 国产精品久久久久一区二区| 久久午夜夜伦鲁鲁片| 日韩在线a电影| 91香蕉视频污版| 蜜芽一区二区三区| 亚洲人成在线电影| 欧美顶级xxxxbbbb| 手机成人在线| 刘亦菲一区二区三区免费看| 国产一区二区视频在线观看免费| 亚洲天堂二区| 最后生还者第二季在线观看| 啪啪激情综合网| 秋霞午夜一区二区三区视频| 久久久久久久久久码影片| 国产成人精品亚洲男人的天堂| 欧美理论一区二区| 久久免费99精品久久久久久| 91精品国产综合久久精品麻豆| 一区二区网站| 疯狂蹂躏欧美一区二区精品| 91丨九色丨丰满| 国产日韩视频一区二区三区| 91久久国产综合久久91精品网站| 成人女同在线观看| 欧美日韩在线观看一区| 热re99久久精品国产66热| 精品久久福利| 国产成a人亚洲精v品在线观看| 精品国产不卡| 欧美成人精品1314www| 亚洲美女一区| 成年人黄国产| 日韩av男人的天堂| 先锋av资源网| 午夜精品久久久久久久男人的天堂| 国产一区二区三区不卡在线观看| 日韩在线视频网址| 国产www在线观看| 四虎精品一区二区永久在线观看| 亚洲天堂偷拍| 成人深夜直播免费观看| 免费萌白酱国产一区二区三区| 疯狂做受xxxx高潮欧美日本| 91一区在线| 美女的诞生在线观看高清免费完整版中文| 国内精品久久久久影院薰衣草| 欧美精品日日操| 99在线小视频| 国产精品178页| 日韩国产中文字幕| 黄页免费在线| 好吊色在线视频| 天天操天天爱天天干| 国产午夜精品全部视频在线播放| 欧美丝袜一区二区三区| 青青国产在线视频| 一区二区三国产精华液| 色婷婷亚洲mv天堂mv在影片| 18禁一区二区三区| 国产精品区免费视频| 呦视频在线一区二区三区| **毛片在线网站| 久久国产精品久久久久| 91极品身材尤物theporn| 国产日韩综合| 免费一级欧美在线大片| 中文字幕视频在线| 精品一区二区三区免费毛片| 成人高清一区| 爱高潮www亚洲精品| 污视频在线播放| 精品一区二区三区在线观看国产| 伊人久久婷婷色综合98网| 久久99国内| 妞干网在线观看视频| 国产日韩欧美高清| 欧美日韩在线精品一区二区三区| 一区二区高清视频| 亚洲欧洲视频在线观看| 先锋影音av资源在线| 国产精品麻豆久久久| 奇米四色…亚洲| 蜜桃传媒在线观看免费进入| 国产精品久久久久久久久久东京| 亚洲三级视频在线观看| 国产成人在线中文字幕| 亚洲一级片在线观看| 国产精品电影一区二区三区| 亚洲va久久久噜噜噜无码久久| 中文天堂在线一区| 精品国产乱码一区二区三区| 老**午夜毛片一区二区三区| 性爱在线免费视频| av中文在线观看| 99久久综合狠狠综合久久| 国产三级久久久| 不卡的av影片| 日韩电影在线一区二区| 一道本一区二区三区| 国产精品99久久久精品无码| 欧美经典三级视频一区二区三区| 性猛交富婆╳xxx乱大交一| 性xxxx18| 手机在线免费看毛片| 国产精品一区二区三区在线免费观看| 免费h视频网站| 国产午夜精品全部视频在线播放| 色综合久久六月婷婷中文字幕| 9191国产视频| 精品久久久久av影院| 91精品国产综合久久香蕉的用户体验| 久久久美女艺术照精彩视频福利播放| 丁香五月网久久综合| 日本中文字幕一区二区| 亚洲色图久久久| 欧美在线视频一二三| 超碰10000| 91精品国产欧美一区二区18| 亚洲视频免费看| 少妇激情一区二区三区视频| 国产精品精品久久久久久| 偷偷操不一样的久久| 好看的日韩av电影| 国精产品一区一区三区四川| 日韩欧美999| 成人高清av| 青草青草久热精品视频在线观看|