android典型程式碼系列(二十六)------App widget的使用
App widget的使用:
第一步、建立widget類
package cn.beita.mobilesafe.receiver;
import cn.beita.mobilesafe.service.AppWightService;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
public class AppWightReceiver extends AppWidgetProvider {
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
Intent intent=new Intent(context,AppWightService.class);
context.stopService(intent);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
Intent intent=new Intent(context,AppWightService.class);
context.startService(intent);
System.out.println("Intent intent=new Intent(context,AppWightService.class);");
}
}
第二步、在清單檔案中進行配置
<receiver android:name=".receiver.AppWightReceiver" >
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
</receiver>
第三步、xml— example_appwidget_info
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="0"
android:initialLayout="@layout/example_appwidget">
</appwidget-provider>
第四步、建立佈局檔案:layout---example_appwidget
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@drawable/widget_bg_portrait"
android:gravity="center_vertical|center_horizontal">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/widget_bg_portrait_child"
android:orientation="vertical"
android:gravity="center_vertical"
>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginTop="3dip"
android:layout_marginBottom="3dip"
android:id="@+id/tv_widget_count"
android:text="程式數目"/>
<ImageView android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="@drawable/widget_bg_portrait_child_divider"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_widget_memeory"
android:layout_marginLeft="10dip"
android:layout_marginTop="3dip"
android:layout_marginBottom="3dip"
android:text="可用記憶體"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:layout_width="20dip"
android:layout_height="20dip"
android:src="@drawable/notification"
android:id="@+id/iv_appname"
android:layout_margin="4dip"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_appname"
android:layout_toRightOf="@id/iv_appname"
android:layout_alignBaseline="@id/iv_appname"
android:layout_marginTop="5dip"
android:text="手機衛士"/>
</RelativeLayout>
<Button android:layout_width="wrap_content"
android:layout_marginLeft="10dip"
android:paddingLeft="5dip"
android:paddingRight="10dip"
android:id="@+id/bt_example_appwidget"
android:layout_height="wrap_content"
android:background="@drawable/button_shape"
android:text="一鍵清理"/>
</LinearLayout>
</LinearLayout>
第五步、建立service時時地更新上面的appwidget
package cn.beita.mobilesafe.service;
public class AppWightService extends Service {
private AppWidgetManager widgetManager;
private ScheduledExecutorService pool;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
widgetManager=AppWidgetManager.getInstance(getApplicationContext());
System.out.println("widgetManager=AppWidgetManager.ge");
pool = Executors.newScheduledThreadPool(1);
pool.scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
ComponentName componentName=new ComponentName("cn.beita.mobilesafe", "cn.beita.mobilesafe.receiver.AppWightReceiver");
RemoteViews view = new RemoteViews("cn.beita.mobilesafe", R.layout.example_appwidget);
view.setTextViewText(R.id.tv_widget_count, "當前程式數為:"+TaskUtils.getAllProcess(AppWightService.this));
view.setTextColor(R.id.tv_widget_count, Color.RED);
view.setTextViewText(R.id.tv_widget_memeory, "當前可用記憶體為:"+TextFormat.getDataSize(TaskUtils.getAvailMemeoty(AppWightService.this)));
view.setTextColor(R.id.tv_widget_memeory, Color.RED);
Intent intent=new Intent(AppWightService.this,LockClearReceiver.class);
PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
view.setOnClickPendingIntent(R.id.bt_example_appwidget, pendingIntent);
widgetManager.updateAppWidget(componentName, view);
}
}, 1, 2, TimeUnit.SECONDS);
}
@Override
public void onDestroy() {
super.onDestroy();
pool.shutdown();
}
}
相關文章
- android典型程式碼系列(二十五)------popupwindow的使用Android
- android典型程式碼系列(十六)------GPS定位Android
- android典型程式碼系列(三十)------DES加密演算法Android加密演算法
- android典型程式碼系列(二十八)------通話記錄的操作Android
- android典型程式碼系列(十七)------C程式碼中加入LOG_引入標頭檔案AndroidC程式
- android典型程式碼系列(二十)------多執行緒下載、斷點續傳Android執行緒斷點
- android典型程式碼系列(二十二)------按鍵使上面的EditText抖動Android
- android典型程式碼系列(二十九)------簡訊資料庫操作相關Android資料庫
- android典型程式碼系列(二十四)------獲取某個應用程式所佔用的記憶體Android記憶體
- App WidgetAPP
- android典型程式碼系列(十九)------將一個陣列複製成為另外一個陣列的方法Android陣列
- android典型程式碼系列(二十一)------根據檔案字尾名獲得對應的MIME型別Android型別
- android典型程式碼系列(十八)------把java中的jstring的型別轉化成一個c語言中的char字串AndroidJavaJS型別C語言字串
- Android 網路程式設計系列(2)WebView 的使用Android程式設計WebView
- 10個典型實用的PHP程式碼片段PHP
- 把你的程式放到桌面——Android桌面部件WidgetAndroid
- NT域驗證功能VB典型程式碼
- android典型程式碼系列(二十七)------鎖屏開啟瀏覽器傳資料,解屏最小化瀏覽器Android瀏覽器
- 學習ASP.NET Core Blazor程式設計系列二十六——登入(5)ASP.NETBlazor程式設計
- 安卓開發之 App Widget安卓APP
- Spring Boot入門系列(二十六)超級簡單!Spring Data JPA 的使用!Spring Boot
- 典型的ETL使用場景
- Flutter系列二:探究Flutter App在Android宿主App中的整合FlutterAPPAndroid
- Android 網路程式設計系列(4)使用 HttpUrlConnectionAndroid程式設計HTTP
- 創造無限可能 | 在 Android 12 中使用 widgetAndroid
- Android之Widget小元件Android元件
- android app中使用applicationAndroidAPP
- 解決Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse問題AndroidAPP
- 典型的Android使用者的7件事–資料資訊圖Android
- Android App程式碼混淆終極解決方案AndroidAPP
- 使用Android Support Annotations優化你的程式碼Android優化
- 常用的幾個典型指令碼指令碼
- diffusers-原始碼解析-二十六-原始碼
- 1、Flutter Widget(IOS Style) - CupertinoApp;FlutteriOSAPP
- Context的典型使用場景Context
- JavaScript呼叫App原生程式碼(iOS、Android)解決方案JavaScriptAPPiOSAndroid
- Android手機的12非典型用途Android
- Android擴充系列(10)--使用Android Studio閱讀整個Android原始碼Android原始碼