上班天天打酱油 ,哎无事 就学习了下android Widgets 桌面小布件,先看下文档
Dev Guide -》App Widgets
本人英文不好 直接上代码了
先写个类继承AppWidgetProvider
package com.test.App_widget;
import java.util.Calendar;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;
public class MyApp_widget extends AppWidgetProvider {
private Context context;
@Override
public void onUpdate( Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetIds);
context.startService(new Intent(context,MyServices.class));
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int [] appWidgetIds) {
Log.e("updateAppWidget", "updateAppWidget---------------------onStart");
int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
// Create an Intent to launch ExampleActivity
//Intent intent = new Intent(context, MainActivity.class);
//PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
// intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.main);
Calendar calendar=Calendar.getInstance();
int hour=calendar.get(Calendar.HOUR);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
if(minute<10){
views.setTextViewText(R.id.textView1, ""+hour+":0"+minute+":"+second);
}else if(second<10){
views.setTextViewText(R.id.textView1, ""+hour+":"+minute+":0"+second);
}else if(minute<10&&second<10){
views.setTextViewText(R.id.textView1, ""+hour+":0"+minute+":"+second);
} else{
views.setTextViewText(R.id.textView1, ""+hour+":"+minute+":"+second);
}
// views.setOnClickPendingIntent(R.id.button, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current App
// Widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
当你在添加小部件时 ,他会自己调用onUpdate方法
然后是配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.App_widget"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".MyApp_widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" />
</receiver>
<service android:name=".MyServices"></service>
</application>
</manifest>
其实这个类也是这个广播接收器 ,重要的是
<meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" />
我们来看下这个文件
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="86400000"
android:initialLayout="@layout/main"
>
</appwidget-provider>
这些属性大家也知道是什么意思 ,一定是指定这个小部件的大小样式等
下面看下 怎么更新这个小部件的样式 ,比如是 个时钟 第一秒是不是要刷新一次界面,这里 我们写个services
package com.test.App_widget;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
public class MyServices extends Service{
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onStart(final Intent intent, final int startId) {
Log.e("MyServices", "MyServices---------------------onStart");
super.onStart(intent, startId);
AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(this);
int []appWidgetIds =appWidgetManager.getAppWidgetIds(new ComponentName(this, MyApp_widget.class));
MyApp_widget.updateAppWidget(this, appWidgetManager, appWidgetIds);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
onStart(intent, startId);
}
}, 1000);
}
}
这样 就可以
分享到:
相关推荐
### Android Widgets: Spinners 在Android开发中,Spinners(也称为组合框或下拉列表)是一种常用的用户界面组件,用于展示一系列可选择的项。本文将深入探讨Spinners的基本概念、实现方式以及如何在实际项目中应用...
在Android开发中,桌面Widgets是用户界面的一种扩展,允许应用程序在主屏幕上提供快捷方式或实时信息,无需打开应用即可与之交互。以下是对"android新建桌面widgets"这一主题的详细阐述: 1. **Android Widgets概述...
在安卓平台上,开发一款电量显示Widgets插件涉及到多个关键知识点,包括Android SDK的使用、Widget API的掌握、UI设计以及电源管理API的应用。下面将详细解释这些知识点。 1. **Android SDK**: 安卓应用程序的基础...
在Android平台上,开发一款电量显示Widgets插件涉及到多个关键知识点,包括Android系统架构、Widget API、电量监控机制、UI设计以及性能优化等。下面将详细阐述这些内容。 1. **Android系统架构**: Android系统由...
在Android系统中,Widgets是应用程序提供给用户的一种交互方式,让用户可以在主屏幕上快速访问或控制应用功能,而“Android源码——电量显示Widgets插件源码”则是一个专门用来显示设备电量信息的小部件。...
在Android平台上,电量显示Widgets是用户界面中一种实用的功能,它允许用户在主屏幕上快速查看设备的当前电量状态,而无需打开设置应用或通过通知栏查看。"Android 电量显示Widgets插件源码.rar" 提供了实现此类功能...
### Android Widgets: Buttons及相关可点击控件 #### 概述 在Android开发中,`Button`及相关的可点击控件是用户界面设计中不可或缺的一部分。这些控件允许用户通过触摸屏幕来触发应用程序中的某些动作或功能。本篇...
在Android平台上,Widgets是应用程序提供的一种功能,它们可以在用户的主屏幕上显示实时信息,如天气、新闻、音乐控制或,如本例所示,电池状态。这个"Android 电量显示Widgets插件源码.zip"是一个用于创建自定义...
该Android应用源码是一个电量显示Widgets插件的实现,适合于毕业设计或论文研究,它提供了在Android设备主屏幕上实时展示电池电量的功能。这个项目涵盖了Android应用开发中的多个关键知识点,包括Android SDK的使用...
在Android应用开发中,创建一个电量显示Widgets插件是一个常见的需求,这可以帮助用户在主屏幕上快速查看设备的电量状态。本教程将详细讲解如何通过Java编程语言实现这样一个功能丰富的插件。 首先,我们需要理解...
在安卓平台上,开发者可以利用Android系统的开放性,创建各种各样的应用和小部件(Widgets),以提供用户便捷的交互体验。本教程将聚焦于如何实现一个电量显示Widgets插件,帮助用户快速查看设备的电池状态。以下是...
8. **Android Studio**:开发Android应用和Widgets通常使用Android Studio IDE,其提供了各种工具和功能,如代码编辑、调试、构建系统以及对Widgets的预览和配置。 总之,这个源码包提供了学习和理解Android电量...
在Android平台上,Widgets是应用程序提供的一种桌面小部件功能,用户可以将它们添加到主屏幕上,以便快速查看或操控应用的功能,而无需打开完整的应用程序。"电量显示Widgets插件源码.zip"显然包含了创建一个用于...
"Android Misc Widgets" 是一个专为Android平台设计的开源项目,其主要目的是提供一系列具有特殊效果和动画的组件,供开发者学习和参考。这个项目的源码涵盖了多种Android小部件的实现,是Android开发者提升技能、...
Android控件(Widgets)是Android应用程序UI设计的核心组成部分,包括按钮(Button)、文本框(EditText)、图片视图(ImageView)、列表视图(ListView)、网格视图(GridView)、滑动选择器(SeekBar)、进度条...