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

首頁 > 系統 > Android > 正文

android桌面懸浮窗顯示錄屏時間控制效果

2019-10-21 21:49:53
字體:
來源:轉載
供稿:網友

本文實例為大家分享了android桌面懸浮窗,實現錄屏時間控制顯示效果的具體代碼,供大家參考,具體內容如下

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="結束"         android:textColor="#ffffff"         android:textSize="10dp" />     </LinearLayout>   </LinearLayout> </LinearLayout> 

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

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;   //已經錄制多少秒了   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;   /**    * 創建浮動窗口設置布局參數的對象    */   WindowManager mWindowManager;     //觸摸監聽器   GestureDetector mGestureDetector;     FloatingListener mFloatingListener;    @Override   public void onCreate() {     super.onCreate();    initWindow();//設置窗口的參數    initFloating();//設置懸浮窗圖標  }   @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);//設置好懸浮窗的參數     // 懸浮窗默認顯示以左上角為起始坐標     wmParams.gravity = Gravity.LEFT | Gravity.TOP;     //懸浮窗的開始位置,因為設置的是從左上角開始,所以屏幕左上角是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進行設置    *    * @param wmParams    * @return    */   public WindowManager.LayoutParams getParams(WindowManager.LayoutParams wmParams) {     if (wmParams == null) {       wmParams = new WindowManager.LayoutParams();     }     //設置window type 下面變量2002是在屏幕區域顯示,2003則可以顯示在狀態欄之上     //wmParams.type = LayoutParams.TYPE_PHONE;     //wmParams.type = LayoutParams.TYPE_SYSTEM_ALERT;     wmParams.type = LayoutParams.TYPE_SYSTEM_ERROR;     //設置圖片格式,效果為背景透明     wmParams.format = PixelFormat.RGBA_8888;     //設置浮動窗口不可聚焦(實現操作除浮動窗口外的其他可見窗口的操作)     //wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;     //設置可以顯示在狀態欄上     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;     //設置懸浮窗口長寬數據     wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;     wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;     return wmParams;   }    /**    * 找到懸浮窗的圖標,并且設置事件    * 設置懸浮窗的點擊、滑動事件    */   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){       //設置監聽器       mFloatingListener = new FloatingListener();     }     mlayout.setOnTouchListener(mFloatingListener);     stopRecord.setOnTouchListener(mFloatingListener);   } /×  ×錄屏狀態顯示(閃爍效果)  ×/   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);   }     //開始觸控的坐標,移動時的坐標(相對于屏幕左上角的坐標)   private int mTouchStartX, mTouchStartY, mTouchCurrentX, mTouchCurrentY;   //開始時的坐標和結束時的坐標(相對于自身控件的坐標)   private int mStartX, mStartY, mStopX, mStopY;   private boolean isMove;//判斷懸浮窗是否移動     /**    * 懸浮窗監聽器    */   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獲取不到監聽     }   }    /**    * 自定義的手勢監聽類    */   class MyOnGestureListener extends SimpleOnGestureListener {     @Override     public boolean onSingleTapConfirmed(MotionEvent e) {       if (!isMove) {         System.out.println("onclick");       }       return super.onSingleTapConfirmed(e);     }   }  } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青久久av北条麻妃海外网| 欧美日韩一区二区在线| 欧美大胆a视频| 日韩av网址在线观看| 最新国产精品拍自在线播放| 日韩电影在线观看永久视频免费网站| 亚洲精品天天看| 亚洲美女精品久久| 亚洲人成电影在线播放| 成人欧美一区二区三区在线| 成人欧美在线视频| 久久天堂av综合合色| 中文字幕欧美日韩精品| 国产精品久久中文| 亚洲女同性videos| 欧美日韩亚洲网| 久久久久久91香蕉国产| 国产日韩欧美另类| 国产精品视频不卡| 综合国产在线观看| 国产精品黄页免费高清在线观看| 成人激情视频在线观看| 九九热精品视频在线播放| 成人午夜小视频| 一区二区欧美日韩视频| 欧美丰满少妇xxxxx做受| 最好看的2019的中文字幕视频| 国产日韩在线一区| 欧美老肥婆性猛交视频| 亚洲欧美日韩视频一区| 欧美日韩另类视频| 国产精品入口夜色视频大尺度| 欧美激情在线播放| 一个人看的www久久| 一本色道久久88综合日韩精品| 亚洲第一综合天堂另类专| 亚洲日韩中文字幕在线播放| 亚洲男人第一av网站| 91精品久久久久久久久久另类| 久热精品在线视频| 日韩网站免费观看高清| 久久全国免费视频| 久久人体大胆视频| 日韩中文字幕网站| 日韩av免费在线看| 中文日韩在线视频| 成人中文字幕+乱码+中文字幕| 8050国产精品久久久久久| 亚洲第一天堂av| 中文字幕视频一区二区在线有码| 亚洲自拍另类欧美丝袜| 欧美性xxxx极品高清hd直播| 91麻豆国产精品| 欧美日韩在线视频观看| 日韩一区二区久久久| 高清一区二区三区四区五区| 色先锋久久影院av| 亚洲色图综合久久| 欧美亚洲国产日本| 日韩av成人在线观看| 琪琪亚洲精品午夜在线| 亚洲成在人线av| 亚洲精品v欧美精品v日韩精品| 久久久www成人免费精品| 亚洲综合第一页| 97在线免费视频| 精品国产欧美成人夜夜嗨| 久久久91精品| 欧美午夜激情视频| 亚洲精品美女在线观看| 成人啪啪免费看| 亚洲一二在线观看| 精品国产欧美一区二区五十路| 中文字幕在线视频日韩| 国产精品国产三级国产aⅴ浪潮| 欧美日韩在线视频观看| 亚洲精品成人av| 精品丝袜一区二区三区| 国产精品成人av在线| 欧美在线观看视频| 欧美一区二区三区精品电影| 精品美女永久免费视频| 欧美另类交人妖| 国产日韩一区在线| 一本色道久久综合狠狠躁篇的优点| 一本色道久久88亚洲综合88| 国产成人avxxxxx在线看| 亚洲自拍欧美色图| 亚洲久久久久久久久久久| 国产精品69精品一区二区三区| 久久视频在线直播| 国产不卡精品视男人的天堂| 国产精品久久在线观看| 国产日韩在线看| 欧美日韩午夜激情| 福利视频导航一区| 欧美在线亚洲在线| 久久99久久99精品中文字幕| 欧美一区二区三区艳史| 亚洲91av视频| 亚洲色图日韩av| 欧美激情一区二区三区成人| 国产成人在线播放| 欧美高清在线观看| 国产精品第100页| 精品亚洲一区二区| 欧美日韩国产91| 国内外成人免费激情在线视频网站| 中文字幕少妇一区二区三区| 国产精品三级网站| 日韩精品在线观| 国产精品黄色影片导航在线观看| 亚洲第一网站男人都懂| 欧美孕妇性xx| 午夜精品美女自拍福到在线| 久久久噜噜噜久久久| 亚洲欧美在线一区二区| 亚洲欧美一区二区三区在线| 国产丝袜一区二区三区免费视频| 国产精品视频白浆免费视频| 国产成人福利夜色影视| 国产亚洲精品久久久久动| 久久久精品一区二区三区| 黑人巨大精品欧美一区二区一视频| 国产一区二区免费| 国产女人18毛片水18精品| 久久色在线播放| 久久久久久久久国产精品| 韩国三级日本三级少妇99| 欧美久久精品午夜青青大伊人| 国产日韩欧美影视| 深夜福利91大全| 国语自产精品视频在线看抢先版图片| 精品动漫一区二区| 亚洲精品suv精品一区二区| 亚洲成人网久久久| 亚洲欧洲日韩国产| 国产精品久久久久久久av电影| 成人乱人伦精品视频在线观看| 日韩av黄色在线观看| 91免费精品视频| 欧美视频在线视频| 日韩av在线天堂网| 欧美视频在线看| 日韩中文字幕精品视频| 亚洲精品免费网站| 久久久久日韩精品久久久男男| 国产欧美一区二区三区四区| 亚洲成人在线视频播放| 国产精品九九久久久久久久| 欧美国产极速在线| 欧美激情中文字幕在线| 欧美精品久久久久a| 在线精品国产欧美| 亚洲tv在线观看| 亚洲一区国产精品| 一区二区三区久久精品| 欧美猛交ⅹxxx乱大交视频| 久久亚洲国产成人| 国产精品久久久久久久久借妻| 狠狠躁夜夜躁人人爽天天天天97| 午夜精品免费视频| 欧美日韩一区二区免费在线观看| 欧美小视频在线观看|