StackView Widget示例程序(StackWidgetService.java)
来源:互联网 发布:科比2012赛季数据 编辑:程序博客网 时间:2024/05/17 15:58
StackWidgetService.java文件
原文地址:http://developer.android.com/resources/samples/StackWidget/src/com/example/android/stackwidget/StackWidgetService.html
The file containing the source code shown below is located in the corresponding directory in
<sdk>/samples/android-<version>/...
/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.android.stackwidget;import java.util.ArrayList;import java.util.List;import android.appwidget.AppWidgetManager;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.widget.RemoteViews;import android.widget.RemoteViewsService;public class StackWidgetService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { return new StackRemoteViewsFactory(this.getApplicationContext(), intent); }}class StackRemoteViewsFactory implements RemoteViewsService.RemoteViewsFactory { private static final int mCount = 10; private List<WidgetItem> mWidgetItems = new ArrayList<WidgetItem>(); private Context mContext; private int mAppWidgetId; public StackRemoteViewsFactory(Context context, Intent intent) { mContext = context; mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } public void onCreate() { // In onCreate() you setup any connections / cursors to your data source. Heavy lifting, // for example downloading or creating content etc, should be deferred to onDataSetChanged() // or getViewAt(). Taking more than 20 seconds in this call will result in an ANR. for (int i = 0; i < mCount; i++) { mWidgetItems.add(new WidgetItem(i + "!")); } // We sleep for 3 seconds here to show how the empty view appears in the interim. // The empty view is set in the StackWidgetProvider and should be a sibling of the // collection view. try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } public void onDestroy() { // In onDestroy() you should tear down anything that was setup for your data source, // eg. cursors, connections, etc. mWidgetItems.clear(); } public int getCount() { return mCount; } public RemoteViews getViewAt(int position) { // position will always range from 0 to getCount() - 1. // We construct a remote views item based on our widget item xml file, and set the // text based on the position. RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.widget_item); rv.setTextViewText(R.id.widget_item, mWidgetItems.get(position).text); // Next, we set a fill-intent which will be used to fill-in the pending intent template // which is set on the collection view in StackWidgetProvider. Bundle extras = new Bundle(); extras.putInt(StackWidgetProvider.EXTRA_ITEM, position); Intent fillInIntent = new Intent(); fillInIntent.putExtras(extras); rv.setOnClickFillInIntent(R.id.widget_item, fillInIntent); // You can do heaving lifting in here, synchronously. For example, if you need to // process an image, fetch something from the network, etc., it is ok to do it here, // synchronously. A loading view will show up in lieu of the actual contents in the // interim. try { System.out.println("Loading view " + position); Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } // Return the remote views object. return rv; } public RemoteViews getLoadingView() { // You can create a custom loading view (for instance when getViewAt() is slow.) If you // return null here, you will get the default loading view. return null; } public int getViewTypeCount() { return 1; } public long getItemId(int position) { return position; } public boolean hasStableIds() { return true; } public void onDataSetChanged() { // This is triggered when you call AppWidgetManager notifyAppWidgetViewDataChanged // on the collection view corresponding to this factory. You can do heaving lifting in // here, synchronously. For example, if you need to process an image, fetch something // from the network, etc., it is ok to do it here, synchronously. The widget will remain // in its current state while work is being done here, so you don't need to worry about // locking up the widget. }}
- StackView Widget示例程序(StackWidgetService.java)
- StackView Widget示例程序(StackWidgetProvider.java)
- StackView Widget示例程序(WidgetItem.java)
- StackView Widget示例程序
- StackView Widget示例程序(stackwidgetinfo.xml)
- StackView Widget示例程序(AndroidManifest.xml)
- StackView Widget示例程序(widget_item_background.xml)
- StackView Widget示例程序(strings.xml)
- StackView
- StackView
- Android Widget 小部件(四---完结) 使用ListView、GridView、StackView、ViewFlipper展示Widget
- java 枚举类型 enum (示例程序)
- Java小程序示例
- java小程序 示例
- Java基础示例程序
- android studio StackView控件的源码解释和简单示例
- WIDGET滚动设置示例代码(例中WIDGET绑定在IUTKFORM中)
- StackView滑动预览图片(LG_stackView)---bug
- 工业和信息化部全国信息技术水平考试
- unity用socket(TcpLitsener)来操作sqlserver
- mysql对表字段的操作【添加,修改,删除】
- Android中.9.png格式的图片的制作
- 2013年计算机技术与软件专业技术资格(水平)考试安排
- StackView Widget示例程序(StackWidgetService.java)
- MIPS 指令
- MIPS 通用寄存器
- StackView Widget示例程序(WidgetItem.java)
- ListCtrl点击表头排序的总结
- Linear hashing 线性哈希表
- 网络安全
- 永中Office用户使用中常见问题与解答
- StackView Widget示例程序(AndroidManifest.xml)