创建Widget
2016-06-26 23:15
260 查看
以下实例是进程管理的widger,在桌面就可看到进程的数目和可用内存
1、在receive中创建ProcessWidget
2、在清单文件当中声明
3、创建xml/example_appwidget_info
3、创建widget布局process_widget
4、创建服务更新widget界面
1、在receive中创建ProcessWidget
public class ProcessWidget extends AppWidgetProvider { Intent intent; @Override public void onDeleted(Context context, int[] appWidgetIds) { super.onDeleted(context, appWidgetIds); intent = new Intent(context, UpdateWidgetService.class); context.stopService(intent); } @Override public void onEnabled(Context context) { super.onEnabled(context); intent = new Intent(context, UpdateWidgetService.class); context.startService(intent); } }
2、在清单文件当中声明
<receiver android:name="cn.dan.receiver.ProcessWidget" > <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>
3、创建xml/example_appwidget_info
<?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="1800000" android:initialLayout="@layout/process_widget" > </appwidget-provider>
3、创建widget布局process_widget
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/widget_bg_portrait" android:gravity="center_vertical" > <LinearLayout android:layout_width= 4000 "0.0dip" android:layout_height="fill_parent" android:layout_marginLeft="5.0dip" android:layout_weight="1.0" android:background="@drawable/widget_bg_portrait_child" android:gravity="center_vertical" android:orientation="vertical" android:paddingBottom="3.0dip" android:paddingTop="3.0dip" > <TextView android:id="@+id/process_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10.0dip" /> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="1.0dip" android:layout_marginTop="1.0dip" android:background="@drawable/widget_bg_portrait_child_divider" /> <TextView android:id="@+id/process_memory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10.0dip" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" > <ImageView android:layout_width="20.0dip" android:layout_height="20.0dip" android:background="@drawable/icon5" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" /> </LinearLayout> <Button android:id="@+id/btn_clear" android:layout_width="90.0dip" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginTop="5.0dip" android:background="@drawable/button_background_selected" android:text="一键清理" /> </LinearLayout> </LinearLayout>
4、创建服务更新widget界面
public class UpdateWidgetService extends Service { private Timer timer; private TimerTask task;// Timer 和TimerTask是做定期事件所需要的两个工具 private AppWidgetManager widgetmanager; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { timer = new Timer(); widgetmanager = AppWidgetManager.getInstance(getApplicationContext()); task = new TimerTask() { @Override public void run() { // 更新widget的界面 ComponentName name = new ComponentName("cn.dan", "cn.dan.receiver.ProcessWidget");// 得到这个组件 RemoteViews views = new RemoteViews("cn.dan", R.layout.process_widget); views.setTextViewText( R.id.process_count, "进程的数目:" + TaskUtil .getProcessCount(getApplicationContext())); views.setTextViewText( R.id.process_memory, "可用内存:" + TaskUtil .getMemorySize(getApplicationContext())); views.setTextColor(R.id.process_memory, Color.RED); views.setTextColor(R.id.process_count, Color.RED); Intent intent = new Intent(getApplicationContext(), LockScreenReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast( getApplicationContext(), 0, intent, 0); views.setOnClickPendingIntent(R.id.btn_clear, pendingIntent); widgetmanager.updateAppWidget(name, views); } }; timer.schedule(task, 1000, 2000); super.onCreate(); } @Override public void onDestroy() { timer.cancel(); timer=null; task=null; super.onDestroy(); } }
相关文章推荐
- pyqt4教程之widget使用示例分享
- CI框架整合widget(页面格局)的方法
- Yii中创建自己的Widget实例
- ThinkPHP的Widget扩展实例
- Android桌面组件App Widget用法入门教程
- android自定义toast(widget开发)示例
- Android开发之App widget用法实例分析
- android实现widget时钟示例分享
- Android开发中Widget的生命周期实例分析
- 简单掌握Android Widget桌面小部件的创建步骤
- Android桌面组件App Widget完整案例
- thinkPHP下的widget扩展用法实例分析
- WordPress中使主题支持小工具以及添加插件启用函数
- 讲解Android中的Widget及AppWidget小工具的创建实例
- CI框架整合widget(页面格局)的方法
- OpenSNS 轻社交(原 ThinkOX) 1.6.0 新版发布公告
- ios8 widget
- 初识Android的Widget开发
- OpenSNS中,js请求Widget
- gnome-logs开发记录4--noob重构代码就是这个feel