widget嘻嘻

Mainfest.xml

?xml version="1.0" encoding="UTF-8"?>
-<manifest android:versionName="1.0" android:versionCode="1" package="cn.itcast.widget" xmlns:android="http://schemas.android.com/apk/res/android"> -<application android:label="@string/app_name" android:icon="@drawable/icon"> -<activity android:label="@string/app_name" android:name=".MainActivity"> -<intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> -<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/appwidget_info"/> </receiver> <service android:name=".WidgetUpdateService"/> </application> <uses-sdk android:minSdkVersion="8"/> </manifest>

MainActivity.java

package cn.itcast.widget;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

TimeWidgetProvider.java

package cn.itcast.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 onDeleted(Context context, int[] appWidgetIds) {//只要部件被删除就会触 发
  // TODO Auto-generated method stub
  super.onDeleted(context, appWidgetIds);
}

@Override
public void onEnabled(Context context) {//只有在第一次添加部件到桌面时才会触发,
  context.startService(new Intent(context, WidgetUpdateService.class));
}

@Override
public void onDisabled(Context context) {//最后一个同类型的部件被删除了,就会触发该 方法
  context.stopService(new Intent(context, WidgetUpdateService.class));
}

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
 
 
}

}

WIdgetUpdateService.java

package cn.itcast.widget;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.app.PendingIntent;
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 WidgetUpdateService extends Service {
    private Timer timer;
   
@Override
public void onCreate() {
  super.onCreate();
  timer = new Timer(true);
  timer.schedule(new WidgetUpdateTask(), 0, 1000);
}

private final class WidgetUpdateTask extends TimerTask{
  public void run() {
   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String time = dateFormat.format(new Date());
   RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.appwidget);
   remoteViews.setTextViewText(R.id.textView, time);
  
   Intent intent = new Intent(getApplicationContext(), MainActivity.class);
   PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),
     1000, intent, 0);
   remoteViews.setOnClickPendingIntent(R.id.textView, pendingIntent);
  
   AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
   ComponentName componentName = new ComponentName(getApplicationContext(), TimeWidgetProvider.class);
   appWidgetManager.updateAppWidget(componentName, remoteViews);
  }
}

@Override
public void onDestroy() {
  if(timer!=null){
   timer.cancel();
   timer = null;
  }
  super.onDestroy();
}

@Override
public IBinder onBind(Intent intent) {
  // TODO Auto-generated method stub
  return null;
}

}

drawable/bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#E1F1FF"
        android:endColor="#6060F9"
        android:angle="270"/>
       
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
   
     <stroke
        android:width="2dp"
        android:color="#000099"
        android:dashWidth="8dp"
        android:dashGap="4dp" />

</shape>

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:background="@drawable/bg"
  >
 
  <TextView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:text="鎴戞槸widget"
  android:id="@+id/textView"
  />
</LinearLayout>

apapwidget_info.xml

<?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="0"
    android:initialLayout="@layout/appwidget"
    >
</appwidget-provider>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值