效果圖:
activity代碼:
package cn.com.chenzheng_java; import android.app.Activity; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; /*** * @description 查看手機電池電量,這裏要注意監聽Intent.ACTION_BATTERY_CHANGED的廣播接收者,只能 * 在程序中顯示的註冊,不能再androiManifest.xml中進行靜態的註冊 * @author chenzheng_java * @since 2011/03/16 * */ public class BatteryActivity extends Activity implements OnClickListener{ // 當系統處於充電狀態或者電量發生改變時會廣播該action private static final String ACTION_NAME = Intent.ACTION_BATTERY_CHANGED; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.battery); Button button = (Button) findViewById(R.id.button1); // 注意哦,我們這裏的activity實現了View.OnClickListener接口 button.setOnClickListener(this); } // 聲明廣播接收者 BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String actionName = intent.getAction(); if(actionName.equals(ACTION_NAME)){ int level = intent.getIntExtra("level", 0); int scale = intent.getIntExtra("scale", 100); // Toast.makeText(BatteryActivity.this, "level="+level+" scale="+scale, Toast.LENGTH_LONG).show(); final Dialog dialog = new Dialog(BatteryActivity.this); dialog.setTitle("電量顯示"); // 加載xml佈局文件爲View對象 LayoutInflater flater = LayoutInflater.from(BatteryActivity.this); View view = flater.inflate(R.layout.battery2, null); dialog.setContentView(view,new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); /** * 獲取該dialog顯示的父窗口,然後設置當dialog顯示時,窗口內的其他部分設置爲模糊 * WindowManager.LayoutParams.FLAG_BLUR_BEHIND告訴我們,無論什麼對象顯示於前段, * 都會顯示在window的最上層 */ Window window = dialog.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); /** * 這裏注意findViewById()方法,默認的會去加載main.xml中的組件。如果你想加載x.xml中的id爲 * a的組件,那麼應該在前面加上setContentView這個佈局文件的對象,如這裏的dialog */ TextView textView = (TextView)dialog.findViewById(R.id.textView_message); textView.setText("目前的手機電量爲"+level*100/scale+"%"); Button button2 = (Button) dialog.findViewById(R.id.button_back); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); // 註銷廣播接收者 unregisterReceiver(broadcastReceiver); } }); dialog.show(); } } }; @Override public void onClick(View v) { IntentFilter filter = new IntentFilter(ACTION_NAME); registerReceiver(broadcastReceiver, filter); } }
battery2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:text="TextView" android:id="@+id/textView_message" android:textSize="10sp" android:gravity="center" android:padding="10px" android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView> <Button android:id="@+id/button_back" android:layout_width="wrap_content" android:text="返回" android:layout_height="wrap_content"></Button> </LinearLayout>
battery.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:text="顯示電量" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LinearLayout>
最近Virtualbox虛擬機經常卡頓、鼠標無法點擊,給工作帶來很多麻煩。有一次身子在開會的時候直接卡死,特別尷尬。。 一開始以爲是輸入法或者操作系統補丁的問題,但調整後並不能解決。 更改虛擬機的各種設置,全部無效。 之後升級了Virt
比特幣採用Pow共識機制,即不斷調整Nonce值,對區塊頭做雙重SHA256哈希運算,使得結果滿足給定數量前導0的哈希值的過程。其中前導0的個數,取決於挖礦難度,前導0的個數越多,挖礦難度越大。 1 塊兒產生時的檢查 首先,生成鑄幣交易,並
插件原理回顧 在前面,我們通過 MyBatis插件機制介紹與原理 分析了 MyBatis 插件的基本原理,但是可能還只是理論上的分析,沒有實戰的鍛鍊可能理解的還是不夠透徹。接下來,我們通過自定義插件實例來進一步深度理解 MyBatis 插件
繼上一篇文章在.NET Core,除了VB的LikeString,還有其它方法嗎?(四種LikeString實現分享)分享了四種實現方式,筆者對這四種實現方式,不管是執行性能還是內存分配性能上,都不太滿意。 那麼是否有好的實現方法呢?答案是
1.繼承Thread類 2.實現Runnable接口 因爲Runnable接口就是支持函數式編程的接口,可以這麼玩 3.實現Callable接口,用FutureTask<T>獲取返回值。FutureTask還是繼承的Runn
前言: 首先要知道什麼是線程池? 池化:數據庫連接池, 線程池,字符串常量池 線程是用來執行任務的, 如果不用線程池,那麼線程每次使用前創建,使用後釋放,資源利用率低。所以說用線程池提高了線程對象利用率。 所以可以用線程池完成,先創建好那麼
實驗環境 原理 生成kube-vip靜態pod配置清單 export VIP=192.168.215.200 # 我的vip是192.168.215.200 export INTERFACE=ens33 #可以用 ip a 查看接口名稱
前言 使用 Keyboard Maestro 做自動化管理是,Actions太多了,總是記不住,這裏特意記錄一下 正文 觸發鍵盤按鍵 Type a Keystroke Categories: Interface Control Action
前言 今天大姚給大家分享一款.NET開源(MIT License)、免費、跨平臺、功能強大的繪圖庫,支持多平臺使用(包括:WPF、UWP、WinForm、Silverlight、Xamarin.iOS、Xamarin.Android、Xam
前言 算法在計算機科學和程序設計中扮演着至關重要的角色,如在解決問題、優化效率、決策優化、實現計算機程序、提高可靠性以及促進科學融合等方面具有廣泛而深遠的影響。今天大姚給大家分享一個開源、免費、全面的C#算法實戰教程:TheAlgorith
筆記本沒顯卡. 玩黑魂1, 不是重置版還可以. 裝上受死版之後, 需要打dsfix 的補丁. 設置: DSfix.ini # internal rendering resolution of the game # higher values
C語言--右移 左移 右移,高位補符號位,低位移除(正整數符號位爲0,負整數符號位爲1) 16 >> 2 等價爲 16 /( 2 * 2) 左移,高位移除,低位補零,最高位爲1時,表示負數。16 << 2 等價爲 16 *( 2 * 2)
一、緩存雪崩、緩存穿透 現象:緩存雪崩:大量緩存同時過期、緩存中間件宕機 緩存穿透:訪問不存在key、緩存過期解決:緩存雪崩:設置不同過期時間 緩存穿透:不存在key也存入緩存、使用布隆過濾器、使用分佈式
在使用HbuilderX,使用vue3開發uniapp時,我運行app,報錯,rollup組件找不到了。這個rollup是一個編譯js的工具,win32-x64的意思是採用windows版本64位的運行版本,msvc是說,需要windows