`
wang_peng1
  • 浏览: 3944491 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

更新appwight桌面小控件

阅读更多

一个小控件转换图片

private static int layoutId;

// onReceive should be something like this
@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();

    if (bundle != null) {
        int newLayoutId = bundle.getInt("layout_id");
              layoutId = newLayoutId;
        initViews(context);
    } else {
        initViews(context);
    }
}


private void initViews(Context context) {
    RemoteViews views = null;

    // Set the initial layout   
    if (layoutId == 0) {
        Intent layoutIntent = new Intent("android.appwidget.action.APPWIDGET_UPDATE");
        Bundle layoutBundle = new Bundle();

              layoutBundle.putInt("layout_id", 1);

        PendingIntent lPendingIntent = PendingIntent.getBroadcast(context, 0,
                layoutIntent, PendingIntent.FLAG_ONE_SHOT);

               views = new RemoteViews(context.getPackageName(), R.layout.layout_zero);

              views.setOnClickPendingIntent(R.id.btnNext, lPendingIntent);
    } // Else if there's some trigger to change the layout...
    else if (layoutId == 1) {
        Intent layoutIntent = new Intent("android.appwidget.action.APPWIDGET_UPDATE");
        Bundle layoutBundle = new Bundle();

        // Since I only have two layouts, I put here the id of the previous layout
        layoutBundle.putInt("layout_id", 0);

        PendingIntent lPendingIntent = PendingIntent.getBroadcast(context, 0,
                layoutIntent, PendingIntent.FLAG_ONE_SHOT);

              views = new RemoteViews(context.getPackageName(), R.layout.layout_one);
        views.setOnClickPendingIntent(R.id.btnPrev, lPendingIntent);
    }
}

2 其实简单的实践   widget_flame_with_border_off.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
   android:gravity="center"
   android:background="@drawable/widget_frame_portrait1x1_black"
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_height="74dip"
   android:layout_width="74dip">

   <LinearLayout
      android:id="@+id/btn_led"
      android:layout_width="52dip"
      android:layout_height="52dip"
      android:background="@drawable/appwidget_button_center"
      android:clickable="true"
      android:focusable="true"
      android:gravity="center">

      <ImageView
          android:id="@+id/img_led"
          android:layout_height="40dip"
          android:layout_gravity="center"
          android:layout_width="40dip"
          android:src="@drawable/mototorch_led_off"
          android:scaleType="fitXY" />

   </LinearLayout>
</LinearLayout>

 

widget_flame_with_border_on.xml

<pre><?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
   android:gravity="center"
   android:background="@drawable/widget_frame_portrait1x1_black"
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_height="74dip"
   android:layout_width="74dip">

   <LinearLayout
      android:id="@+id/btn_led"
      android:layout_width="52dip"
      android:layout_height="52dip"
      android:background="@drawable/appwidget_button_center"
      android:clickable="true"
      android:focusable="true"
      android:gravity="center">

      <ImageView
          android:id="@+id/img_led"
          android:layout_height="40dip"
          android:layout_gravity="center"
          android:layout_width="40dip"
          android:src="@drawable/mototorch_led_on"
          android:scaleType="fitXY" />

   </LinearLayout>
</LinearLayout>

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
     RemoteViews views = null;

     int layoutID = 0;

     if (ledIsOn){
         layoutID = R.layout.widget_flame_with_border_on;
     }
     else {
         layoutID = R.layout.widget_flame_with_border_off;
     }

     // the layoutID that is passed in the constructor of the
     //   RemoteViews object is the layout that will be loaded
     //   when the widget is updated.
     views = new RemoteViews(context.getPackageName(), layoutID);

     for (int i = 0; i < appWidgetIds.length; i++) {
          appWidgetManager.updateAppWidget(appWidgetIds[i], views);
     }
}

 

 

分享到:
评论

相关推荐

    桌面小控件

    【桌面小控件】是一种基于Eclipse开发环境创建的自定义UI组件,它可以在用户的桌面上提供便捷的功能或展示信息。这种小控件通常体积小巧,功能实用,能够提高用户的工作效率,为日常电脑操作增添便利。 在Windows...

    桌面时间控件.zip

    这种桌面时间控件通常以小部件或独立窗口的形式出现在计算机屏幕上,允许用户自定义显示样式、设置提醒或者与其他时间管理功能集成。 【描述】提到的"horloger安装包"可能是这个桌面时钟应用的主要程序文件,...

    微软的远程桌面ActiveX控件 - msrdp.ocx

    微软的远程桌面ActiveX控件 微软的远程桌面ActiveX控件 微软的远程桌面ActiveX控件

    桌面拖动控件

    在Android系统中,"桌面拖动控件"是一种交互式功能,允许用户在主屏幕上自由移动应用程序快捷方式、小部件或者其他自定义控件。这种功能增强了用户的个性化体验,使得布局可以根据个人喜好进行调整。让我们深入探讨...

    安卓Launcher桌面相关-使用eclipse开发工具自己写的一个桌面小控件.rar

    本教程将基于 Eclipse 开发环境,讲解如何创建一个基本的自定义桌面小控件。 1. **Eclipse 环境搭建** - 首先,确保你已经安装了 Eclipse IDE for Java Developers,这是 Android 应用开发的基础。 - 安装 ADT...

    Window显示桌面控件

    在Windows操作系统中,“显示桌面”控件是一个非常实用的功能,它允许用户快速隐藏所有打开的窗口,以便查看桌面。这个功能对于需要频繁切换工作环境或者清理屏幕空间的用户来说尤其方便。下面我们将深入探讨“显示...

    桌面日历控件

    "桌面日历控件"是一种在个人电脑桌面上使用的应用程序,它为用户提供了方便的日程管理、时间跟踪以及节日和生日提醒等功能。这种控件通常作为一个小型的独立窗口或者集成在操作系统界面中,使得用户无需打开专门的...

    安卓桌面控件源码

    `AppWidgetProvider` 是一个广播接收器,负责监听和响应来自系统的事件,如用户添加、删除或更新桌面小部件。而`RemoteViews`则用来定义小部件在主屏幕上的布局和行为。 1. **AppWidgetProvider**: - 定义:...

    c#多线程利用委托更新控件内容

    C# 多线程利用委托更新控件内容 在 C# 编程中,多线程编程是常见的场景之一,特别是在需要实时更新控件内容的情况下。为了解决多线程之间的数据更新问题,本文将介绍如何使用委托(delegate)来更新控件的内容。 ...

    Android之AppWidget(桌面小部件)开发浅析

    AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序,先看图:   图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁的程序,可以做成AppWidget,这样能方便地使用。典型...

    android launcher桌面数字时钟控件

    这种控件通常作为桌面小部件供用户添加到主屏幕上,使得用户无需解锁设备就能快速查看时间。 Android的数字时钟控件设计灵活,开发者可以根据需求自定义样式和功能。它通常由两部分组成:小时和分钟,有时还包括秒...

    android 桌面时钟控件开发代码

    这个代码是桌面时钟的控件代码,欢迎大家参考。

    C# 桌面桌面程序表格控件,带示例

    早先在github上下载的一个C#做桌面程序的表格控件资源,类似DevExpress里面的一些控件,当时主要是为了实现透明背景的表格,所以找的这个资源,里面有各种表格在winform和wpf上的应用示例

    c# 动态改变控件位置、控件大小、拖动控件

    首先,在`MouseDown`事件中记录鼠标点击时的相对位置,然后在`MouseMove`事件中计算新的位置并更新控件的位置。在`MouseUp`事件中停止移动。以下是一个简单的示例: ```csharp private Point dragOffset; ...

    delphi小键盘控件

    "delphi小键盘控件"是一个专为Delphi编程环境设计的组件,它允许开发者为应用程序添加类似于QQ小键盘的功能。这个控件提供了丰富的自定义选项,以满足各种界面设计需求。 Delphi是一种基于Object Pascal的集成开发...

    23.7 桌面集成控件.mp4

    23.7 桌面集成控件.mp4

    VC利用mstscax控件做的远程桌面窗口

    本文将深入探讨如何利用`mstscax`控件在VC++中创建一个嵌入式远程桌面窗口。 `mstscax`是微软提供的一个ActiveX控件,全称为Microsoft Terminal Services Client ActiveX Control,它允许开发者在应用程序中嵌入...

    原创C#Winform桌面应用中实用又美观的开关控件源码

    在C# Winform桌面应用程序开发中,用户界面的交互性和美观性是提升用户体验的关键因素之一。本主题将深入探讨如何创建一个既实用又美观的开关控件,这在很多应用场景中都非常常见,如设置界面、选项配置等。通过提供...

    c# 控件大小(及字体)随窗口大小改变自动缩放

    在C#编程中,开发GUI应用程序时,常常需要让界面元素如控件的大小和字体随着窗口尺寸的变化而自动调整,以保持良好的用户体验。这种功能通常被称为“自适应布局”或“动态布局”。本篇文章将深入探讨如何实现C#控件...

    桌面HTML编辑控件

    【标题】"桌面HTML编辑控件"涉及到的核心技术是HTML编辑和桌面应用程序的集成,它为用户在桌面环境中提供了一种方便的HTML内容创建和编辑工具。这种控件通常允许开发者将网页编辑功能嵌入到他们的Windows应用中,...

Global site tag (gtag.js) - Google Analytics