桌面小控件appwidget的简单使用
来源:互联网 发布:淘宝上很污的买家秀 编辑:程序博客网 时间:2024/05/18 20:35
代码如下
package com.example.today804;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import android.R.color;import android.R.integer;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.app.PendingIntent;import android.appwidget.AppWidgetManager;import android.appwidget.AppWidgetProvider;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.graphics.Color;import android.util.Log;import android.view.Menu;import android.widget.RemoteViews;public class MainActivity extends AppWidgetProvider {private AppWidgetManager appWidgetManager;private Context context;// 将0~9的液晶数字图片定义成数组private int[] digits = { R.drawable.su01, R.drawable.su02, R.drawable.su03,R.drawable.su04, R.drawable.su05, R.drawable.su06, R.drawable.su07,R.drawable.su08, R.drawable.su09, R.drawable.su10, };// 将显示小时、分钟、秒钟的ImageView定义成数组private int[] digitViews = { R.id.ivh1_main, R.id.ivh2_main,R.id.ivm1_main, R.id.ivm2_main, R.id.ivs1_main, R.id.ivs2_main };@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("receive");if (intent.getAction().equals("mytesttoday804")) {RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.activity_main);remoteViews.setTextColor(R.id.tvshowtime_main, Color.RED);ComponentName componentName = new ComponentName(context,MainActivity.class);System.out.println("receive==mytesttoday804");AppWidgetManager app = AppWidgetManager.getInstance(context);app.updateAppWidget(componentName, remoteViews);}super.onReceive(context, intent);}@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {this.context = context;this.appWidgetManager = appWidgetManager;
/*桌面拉了几个相同的控件,数组的长度就是几。。两个按钮一个用来打开拨号界面,一个用来修改文本颜色*/for (int i = 0; i < appWidgetIds.length; i++) {RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.activity_main);Intent intents = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:123"));PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intents, 0);remoteViews.setOnClickPendingIntent(R.id.bt1_main, pendingIntent);Intent intents2 = new Intent("mytesttoday804");PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context,1, intents2, 0);remoteViews.setOnClickPendingIntent(R.id.bt2_main, pendingIntent2);appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);System.out.println(appWidgetIds.length + ":::" + i);}new Timer().schedule(new TimerTask() {@Overridepublic void run() {handler.sendEmptyMessage(0x123);}}, 0, 1000);}private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.activity_main);if (msg.what == 0x123) {// 将当前时间格式化String currentTime = new SimpleDateFormat("HHmmss").format(new Date());for (int i = 0; i < currentTime.length(); i++) {int index = Integer.parseInt(currentTime.charAt(i) + "");remoteViews.setImageViewResource(digitViews[i],digits[index]);}ComponentName componentName = new ComponentName(context,MainActivity.class);remoteViews.setTextViewText(R.id.tvshowtime_main, currentTime);appWidgetManager.updateAppWidget(componentName, remoteViews);}};};}
代码里有8张图,分别对应6个数字以为时间之间的冒号 :
下边有2个按钮,一个文本框
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/ivh1_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su01" /> <ImageView android:id="@+id/ivh2_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su01" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su00" /> <ImageView android:id="@+id/ivm1_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su01" /> <ImageView android:id="@+id/ivm2_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su01" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su00" /> <ImageView android:id="@+id/ivs1_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su01" /> <ImageView android:id="@+id/ivs2_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/su01" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/bt1_main" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打电话" /> <TextView android:id="@+id/tvshowtime_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <Button android:id="@+id/bt2_main" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="改变文本颜色" /> </LinearLayout></LinearLayout>
manifest清单文件里如下,mytesttoday804为自定义的一个action
<receiver android:name="com.example.today804.MainActivity" android:label="@string/app_name"> <intent-filter > <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> <action android:name="mytesttoday804"/> </intent-filter> <meta-dataandroid:name="android.appwidget.provider"android:resource="@xml/appwidget_provider" /> </receiver>
appwidget_provider代码如下,用来设置小空间的一些基本属性。。
<?xml version="1.0" encoding="utf-8"?> <!-- 指定该桌面组件的基本配置信息:minWidth:桌面控件的最小宽度。minWidth:桌面控件的最小高度。updatePeriodMillis:更新频率initialLayout:初始时显示的布局 --> <appwidget-providerxmlns:android="http://schemas.android.com/apk/res/android"android:minWidth="150dip"android:minHeight="70dip"android:updatePeriodMillis="61000000"android:resizeMode="horizontal|vertical" android:widgetCategory="home_screen|keyguard" android:initialLayout="@layout/activity_main"/>
- 桌面小控件appwidget的简单使用
- Android中Appwidget桌面小控件的简单入手方式
- Android:AppWidget 桌面小控件
- AppWidget(桌面小控件详解)
- Appwidget控件的使用
- 开发android的桌面小程序AppWidget
- android 桌面控件appwidget
- appwidget桌面小部件
- appwidget桌面小部件
- Android 桌面小组件AppWidget的使用
- 【Android】AppWidget桌面小部件
- Android桌面小部件AppWidget
- appWidget(桌面小部件)
- 桌面小控件_窗口小部件_窗口小工具_android.appwidget
- 窗口小部件的使用AppWidget
- android 中的AppWidget(桌面小部件)
- android------(桌面小玩意-getActivity)AppWidget
- Android:AppWidget之桌面小电筒
- JS长整型精精度问题
- Python中else语句整理
- Sqlserver:timestamp数据类型
- Java线程
- Java多线程发展简史
- 桌面小控件appwidget的简单使用
- C++ AMP: Lambdas, auto, and static_assert: C++0x Features in VC10, Part 1
- 破解 WinHTTP 和 IESniffer 记录
- Openwrt安装软件到U盘
- Linux内核动态内存分配
- CString转换成CTime
- java.lang.OutOfMemoryError: PermGen space(MyEclipse 内存不足的解决)
- 图像压缩Vs.压缩感知
- 获取文件名并即时显示出来的