android实现widget时钟示例分享

android实现widget时钟示例分享,第1张

概述一、在AndroidManifest.xml文件中配置Widgets:复制代码代码如下:<manifestxmlns:android=\"http://schemas.android.com/apk/res/android\"   package=\"com.example.widget\"   

一、在 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多功能时钟开发案例(实战篇)Android多功能时钟开发案例(基础篇)Android 仿日历翻页、仿htc时钟翻页、数字翻页切换效果Android仿小米时钟效果Android通过Path实现搜索按钮和时钟复杂效果Android实现简单时钟View的方法android 自定义控件 自定义属性详细介绍android自定义控件和自定义回调函数步骤示例Android自定义控件实现可左右滑动的导航条Android开发之自定义控件用法详解Android编程基于自定义控件实现时钟功能的方法 总结

以上是内存溢出为你收集整理的android实现widget时钟示例分享全部内容,希望文章能够帮你解决android实现widget时钟示例分享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存