最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開發(fā)入門之Appwidget用法分析

 更新時(shí)間:2016年07月08日 12:30:19   作者:manymore13  
這篇文章主要介紹了Android開發(fā)入門之Appwidget用法,較為詳細(xì)的分析了App Widget的概念、功能、創(chuàng)建、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Android Appwidget用法。分享給大家供大家參考,具體如下:

App Widgets 是一個(gè)小型應(yīng)用程序的View  他可以嵌入到其他應(yīng)用程序中(如 桌面程序) 并且可以得到周期性刷新。

在創(chuàng)建App Widget之前需要了解以下幾個(gè)概念

AppWidgetProviderInfo對(duì)象

它是對(duì)App Widget 元數(shù)據(jù)的一個(gè)描述,譬如 AppWidget的布局,刷新頻率,以及   AppWidgetProvider 類  這些元數(shù)據(jù)都是定義在XML中。

AppWidgetProvider 類的實(shí)現(xiàn)

對(duì)于App Widget定義了(回調(diào)接口)一些基本的方法,這些方法都是基于廣播事件(broadcast events ),,通過它,當(dāng)App Widget更新,創(chuàng)建,無效,卸載時(shí),你可以接收廣播。

View layout

為App Widget定義初始布局,用XML來布局

另外,你可以為App Widget 實(shí)現(xiàn)一個(gè)配置的Activity,這是一個(gè)可選擇的Activity,在用戶添加你的App Widget 準(zhǔn)備創(chuàng)建時(shí)允許他修改或者配 置App Widget 。

下面我們就開始創(chuàng)建一個(gè)App Widget

① 在Manifest聲明App Widget

首先,在AndroidManifest.xml中聲明  AppWidgetProvider

<receiver android:name="ExampleAppWidgetProvider" >
      <intent-filter>
       <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
      </intent-filter>
      <meta-data android:name="android.appwidget.provider"
        android:resource="@xml/example_appwidget_info" />
</receiver>

<receiver>元素需要Android:name 屬性,AppWidgetProvider作為引用
<intent-filter>  元素務(wù)必要包含 <action>元素 然后Action中要有android:name 屬性,這個(gè)屬性需要指定能接收 ACTION_APPWIDGET_UPDATE 廣播的AppWidgetProvider,也就是ExampleAppWidgetProvider 這個(gè)廣播必須唯一 必須明確聲明,因?yàn)锳ppWidgetManager會(huì)自動(dòng)的發(fā)送所有其他應(yīng)用程序的廣播給AppWidgetProvider,所以很重要。

<meta-data> 元素指定AppWidgetProviderInfo資源需要以下屬性
Android:name -指定了元數(shù)據(jù)的名字,用android.appwidget.provider代表數(shù)據(jù)是AppWidgetProviderInfo描述。
Android:resource -引用AppWidgetProviderInfo 資源的位置
總之一句話:在AndroidManifest.xml主要聲明概念中AppWidgetProvider 和AppWidgetProviderInfo

②添加AppWidgetProviderInfo元數(shù)據(jù)

AppWidgetProviderInfo為AppWidgeet定義了一些最基本的數(shù)據(jù),譬如布局的最小尺寸,初始化布局資源,怎樣更新App Widget,以及在創(chuàng)建app Widget時(shí)的可配置Activity(可選)

要定義一個(gè)AppWidgetProviderInfo對(duì)象可以用XML資源文件定義,保存在res/xml/自己的文件名 ,XML文件中用一個(gè)單一的元素<appwidget-provider> 請(qǐng)看下面的例子:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  android:minWidth="294dp"
  android:minHeight="72dp"
  android:updatePeriodMillis="86400000"
  android:previewImage="@drawable/preview"
  android:initialLayout="@layout/example_appwidget"
  android:configure="com.example.android.ExampleAppWidgetConfigure"
  android:resizeMode="horizontal|vertical">
</appwidget-provider>

initialLayout:指定App Widget布局資源文件
Configure:在創(chuàng)建App Widget時(shí)為他配置屬性的activity
updatePeriodMillis: appwidget更新頻率

③ 創(chuàng)建App Widget 布局

你必須為你的App Widget定義個(gè)初始化布局文件,可以將布局文件放在 res/layout/directory。 你可以設(shè)計(jì)你的App Widget用下面列出來
的View對(duì)象,但是在你設(shè)計(jì)開始之前,請(qǐng)你熟讀App Widget Design Guidelines.

如果你熟悉XML Layouts ,那么創(chuàng)建一個(gè)App Widget將會(huì)是簡(jiǎn)單的, 然而,你必須意識(shí)到App Widget布局是基于 RemoteViews ,它并不是支持每一種layout和View widget。

一個(gè)RemoteView對(duì)象只能支持下面幾種layout布局類:
FrameLayout  LinearLayout   RelativeLayout

支持下面幾種widget 類:
AnalogClock   Button  Chronometer  ImageButton  ImageView  ProgressBar  TextView  ViewFlipper  ListView  GridView
StackView  AdapterViewFlipper

PS:這些類的繼承類也是不被支持的。

下面是我本次寫的demo中的Appwidget

功能很簡(jiǎn)單只為初步理解AppWidget ,響應(yīng)Appwidget上按鈕事件

package com.manymorere.appwidget;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class ExampleAppWidgetProvider extends AppWidgetProvider{
  private static final String ACTION = "com.manymore.appwidget";
  private int id;
  @Override
  public void onDeleted(Context context, int[] appWidgetIds) {
    System.out.println("onDeleted");
    super.onDeleted(context, appWidgetIds);
  }
  @Override
  public void onDisabled(Context context) {
    // TODO Auto-generated method stub
    System.out.println("onDisabled");
    super.onDisabled(context);
  }
  @Override
  public void onEnabled(Context context) {
    // TODO Auto-generated method stub
    System.out.println("onEnabled");
    super.onEnabled(context);
  }
  @Override
  public void onReceive(Context context, Intent intent) {
    System.out.println("onReceive");
    // 自己定義的ACTION
    if(intent.getAction().equals(ACTION))
    {
      RemoteViews remoteView = new RemoteViews(context.getPackageName(),R.layout.appwidget_layout);
      remoteView.setCharSequence(R.id.button, "setText", "22222222222222");
      AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
      ComponentName componentName = new ComponentName(context, ExampleAppWidgetProvider.class);
      appWidgetManager.updateAppWidget(componentName , remoteView);
      System.out.println("收到自定義ACTION");
    }else{
      super.onReceive(context, intent);
    }
  }
  @Override
  public void onUpdate(Context context, AppWidgetManager appWidgetManager,
      int[] appWidgetIds) {
    int N = appWidgetIds.length;
    for(int i = 0; i<N; i++)
    {
      int appWidgetId = appWidgetIds[i];
      Intent intent = new Intent(ACTION);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
      RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.appwidget_layout);
      remoteViews.setOnClickPendingIntent(R.id.button, pendingIntent);
      appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
      System.out.println(appWidgetId);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
  }
}

每次添加Appwidget實(shí)例 都會(huì)調(diào)用onUpdate()方法 然后會(huì)注冊(cè)里面的Button Onclick事件,當(dāng)你點(diǎn)擊該按鈕時(shí)會(huì)發(fā)送一個(gè)broadcast,這個(gè)broadcast是自己定義的,然后onReceive方法會(huì)收到該broadcast,然后再做出一些反應(yīng),我這里是把修改了TextView上的text。

由于Appwidget和本身的應(yīng)用,雖然是在一個(gè)程序中,但運(yùn)行時(shí),它們并不是在一個(gè)進(jìn)程中,所以在在調(diào)用方法和修改界面上多少會(huì)有點(diǎn)限制,沒有普通的(Activity上對(duì)View的一些操作)那么自由,所以想對(duì)Appwidget上的View做一些操作,或者更新Appwidget,一般需要用到RemoteViews,AppWidgetManager 同時(shí)可能還會(huì)用到ComponentName

個(gè)人理解:RemoteViews在創(chuàng)建時(shí)主要代表一個(gè)Appwidget實(shí)例中View的一個(gè)集合 ,而ComponentName則代表一個(gè)整個(gè)Appwidget實(shí)例

完整實(shí)例代碼點(diǎn)擊此處本站下載。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android資源操作技巧匯總》、《Android文件操作技巧匯總》、《Android操作SQLite數(shù)據(jù)庫(kù)技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android Handler的postDelayed()關(guān)閉的方法及遇到問題

    Android Handler的postDelayed()關(guān)閉的方法及遇到問題

    這篇文章主要介紹了Android Handler的postDelayed()關(guān)閉的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Unity3D游戲引擎實(shí)現(xiàn)在Android中打開WebView的實(shí)例

    Unity3D游戲引擎實(shí)現(xiàn)在Android中打開WebView的實(shí)例

    這篇文章主要介紹了Unity3D游戲引擎在Android中打開WebView的實(shí)例,需要的朋友可以參考下
    2014-07-07
  • Android中實(shí)現(xiàn)淘寶購(gòu)物車RecyclerView或LIstView的嵌套選擇的邏輯

    Android中實(shí)現(xiàn)淘寶購(gòu)物車RecyclerView或LIstView的嵌套選擇的邏輯

    這篇文章主要介紹了Android中實(shí)現(xiàn)淘寶購(gòu)物車RecyclerView或LIstView的嵌套選擇的邏輯,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Android 錄制音視頻的完整代碼

    Android 錄制音視頻的完整代碼

    Android中,如果要錄制音頻的話有兩個(gè)選擇,一個(gè)是MediaRecorder,另一個(gè)就是AudioRecord,前者使用簡(jiǎn)單,后者就相對(duì)復(fù)雜點(diǎn),本文通過代碼給大家介紹Android 錄制音視頻的相關(guān)知識(shí),一起看看吧
    2021-06-06
  • Android仿QQ、微信聊天界面長(zhǎng)按提示框效果

    Android仿QQ、微信聊天界面長(zhǎng)按提示框效果

    最近在工作項(xiàng)目中要實(shí)現(xiàn)一個(gè)長(zhǎng)按提示 “復(fù)制” 的功能,類似于QQ、微信聊天界面長(zhǎng)按提示框效果,本來想偷懶在網(wǎng)上找個(gè)開源的項(xiàng)目用,但是看了好幾個(gè)都不是很滿意,所以就打算按照自己的思路來實(shí)現(xiàn)一個(gè)。下面分享給大家,有需要的朋友們可以參考借鑒。
    2016-11-11
  • 淺談Android Studio3.6 更新功能

    淺談Android Studio3.6 更新功能

    這篇文章主要介紹了Android Studio3.6 更新功能的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Android倒計(jì)時(shí)功能的實(shí)現(xiàn)代碼

    Android倒計(jì)時(shí)功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android倒計(jì)時(shí)功能的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • android之HttpPost&HttpGet使用方法介紹

    android之HttpPost&HttpGet使用方法介紹

    下文直接講用法,先知道怎么用,再知道怎么回事,具體如下,感興趣的朋友可以參考下哈
    2013-06-06
  • Android控件之SeekBar的用法總結(jié)

    Android控件之SeekBar的用法總結(jié)

    SeekBar是進(jìn)度條。本篇文章介紹了Android控件之SeekBar的使用,SeekBar的應(yīng)用非常廣,比如用來顯示音量條、播放進(jìn)度條,有水平顯示也有垂直顯示,有興趣的可以了解一下。
    2017-01-01
  • Android如何實(shí)現(xiàn)設(shè)備的異顯功能詳解

    Android如何實(shí)現(xiàn)設(shè)備的異顯功能詳解

    這篇文章主要給大家介紹了關(guān)于Android如何實(shí)現(xiàn)設(shè)備的異顯功能的相關(guān)資料,這篇文章通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

六枝特区| 定安县| 顺昌县| 扎囊县| 申扎县| 同德县| 常熟市| 北票市| 丰宁| 东丽区| 鸡泽县| 阿瓦提县| 高台县| 东乌| 昌都县| 邓州市| 扎鲁特旗| 镇原县| 连城县| 金塔县| 蓝山县| 贡山| 沙雅县| 都兰县| 常山县| 建昌县| 钟山县| 安远县| 蒙自县| 宁城县| 定陶县| 深泽县| 日照市| 怀安县| 德安县| 叙永县| 塔城市| 宣化县| 土默特左旗| 互助| 太原市|