一、在 AndroIDManifest.xml文件中配置Widgets:
复制代码 代码如下:
<manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"
package="com.example.Widget"
androID:versionCode="1"
androID:versionname="1.0" >
<uses-sdk
androID:minSdkVersion="8"
androID:targetSdkVersion="17" />
<application
androID:allowBackup="true"
androID:icon="@drawable/ic_launcher"
androID:label="@string/app_name"
androID:theme="@style/Apptheme" >
<receiver androID:name=".TimeWidgetProvIDer" >
<intent-filter>
<action androID:name="androID.appWidget.action.APPWidget_UPDATE" />
</intent-filter>
<Meta-data
androID:name="androID.appWidget.provIDer"
androID:resource="@xml/timeWidget_info" />
</receiver>
<service androID:name=".TimerService"></service>
</application>
</manifest>
二、在项目的res目录下建立xml目录,并且创建 timeWidget_info.xml 文件,内容如下:
复制代码 代码如下:
<?xml version="1.0" enCoding="UTF-8"?>
<appWidget-provIDer xmlns:androID="http://schemas.androID.com/apk/res/androID"
androID:initialLayout="@layout/time_appWidget"
androID:minHeight="40dp"
androID:minWIDth="40dp"
androID:updatePeriodMillis="0" />
三、在layout文件夹下建立文件time_appWidget.xml:
复制代码 代码如下:
<?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="vertical"
androID:background="@drawable/rectangle"
>
<TextVIEw
androID:layout_wIDth="match_parent"
androID:layout_height="wrap_content"
androID:ID="@+ID/textVIEw"
androID:text="current time"
/>
</linearLayout>
四、在drawable文件夹下建立rectangle.xml文件(这部可以省略,主要是为了美化TextVIEw控件,渐变效果):
复制代码 代码如下:
<?xml version="1.0" enCoding="utf-8"?>
<shape xmlns:androID="http://schemas.androID.com/apk/res/androID"
androID:shape="rectangle" >
<!-- 设置弧度 -->
<corners androID:radius="9dp" />
<gradIEnt
androID:angle="270"
androID:endcolor="#5EADF4"
androID:startcolor="#B3F0FF" />
<padding
androID:bottom="5dp"
androID:left="5dp"
androID:right="5dp"
androID:top="5dp" />
<stroke
androID:dashGap="1dp"
androID:dashWIDth="10dp"
androID:wIDth="6dp"
androID:color="#0000FF" />
</shape>
五、后台代码实现:
复制代码 代码如下:
package com.example.Widget;
import androID.appWidget.AppWidgetManager;
import androID.appWidget.appwidgetprovider;
import androID.content.Context;
import androID.content.Intent;
public class TimeWidgetProvIDer extends appwidgetprovider {
@OverrIDe
public voID onUpdate(Context context,AppWidgetManager appWidgetManager,
int[] appWidgetIDs) {
super.onUpdate(context,appWidgetManager,appWidgetIDs);
}
//当一个Widgets时会被调用
public voID onDeleted(Context context,int[] appWidgetIDs) {
// Todo auto-generated method stub
super.onDeleted(context,appWidgetIDs);
}
//第一次往桌面添加Widgets时会被调用,之后添加同类型Widgets不会被调用
public voID onEnabled(Context context) {
context.startService(new Intent(context,TimerService.class));
}
//从桌面上删除最后一个Widgets时会被调用
public voID onDisabled(Context context) {
context.stopService(new Intent(context,TimerService.class));
}
}
复制代码 代码如下:
package com.example.Widget;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import androID.annotation.Suppresslint;
import androID.app.Service;
import androID.appWidget.AppWidgetManager;
import androID.content.Componentname;
import androID.content.Intent;
import androID.os.IBinder;
import androID.Widget.RemoteVIEws;
public class TimerService extends Service {
private Timer timer;
@OverrIDe
public voID onCreate() {
super.onCreate();
timer = new Timer();
timer.schedule(new MyTimerTask(),1000);
}
private final class MyTimerTask extends TimerTask{
@Suppresslint("SimpleDateFormat")
@OverrIDe
public voID run() {
SimpleDateFormat sdf= new SimpleDateFormat("hh:mm:ss");
String time = sdf.format(new Date());
//获取Widgets管理器
AppWidgetManager WidgetManager =AppWidgetManager.getInstance(getApplicationContext());
//WidgetManager所 *** 作的Widget对应的远程视图即当前Widget的layout文件
RemoteVIEws remoteVIEw = new RemoteVIEws(getPackagename(),R.layout.time_appWidget);
remoteVIEw.setTextVIEwText(R.ID.textVIEw,time);
//当点击Widgets时触发的世界
//remoteVIEw.setonClickPendingIntent(vIEwID,pendingIntent)
Componentname componentname = new Componentname(getApplicationContext(),TimeWidgetProvIDer.class);
WidgetManager.updateAppWidget(componentname,remoteVIEw);
}
}
@OverrIDe
public voID onDestroy() {
timer.cancel();
timer=null;
super.onDestroy();
}
@OverrIDe
public IBinder onBind(Intent intent) {
return null;
}
}
以上是内存溢出为你收集整理的android实现widget时钟示例分享全部内容,希望文章能够帮你解决android实现widget时钟示例分享所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)