android桌⾯开发教程,Android桌⾯组件AppWidget⽤法⼊门教
本⽂实例讲述了Android桌⾯组件App Widget⽤法。分享给⼤家供⼤家参考。具体如下:
Android开发应⽤除了程序应⽤,还有App Widget应⽤。好多⼈会开发程序应⽤⽽不会开发App Widget应⽤。本帖⼦就是帮助⼤家学习如何开发App Widget应⽤的。
先简单说说App Widget的原理。App Widget是在桌⾯上的⼀块显⽰信息的东西,通过单击App Widget跳转到程序⼊⼝类。⽽系统⾃带的程序,典型的App Widget是music,这个Android内置的⾳乐播放⼩程序。这个是典型的App Widget+app应⽤。就是⼀个程序既可以通过App Widget启动,也可以通过App启动。App Widget就是⼀个AppWidgetProvider+⼀个UI界⾯显⽰(预先绑定了好多Intent),界⾯上的信息可以通过程序控制⽽改变,单击Widget上的控件只能激发发送⼀个Intent,或发出⼀个Service的启动通知。⽽AppWidgetProvider可以拦截这个Intent,⽽进⾏相应的处理(⽐如显⽰新的信息)。
以下模拟⼀下App Widget的应⽤
通过两种⽅式启动应⽤程序
1、App Widget启动
长按空⽩的桌⾯主屏幕会弹出“添加到主屏幕”,然后选择“窗⼝⼩部件”选项进⼊“选择窗⼝⼩部件”,最后选择想要的⼩部件就会添加到桌⾯主屏幕,当点击刚才添加的桌⾯控件就会进⼊到程序主⼊⼝。
android学习教程
2、App启动:跟普通的Activity⼀样
以下为实现代码
l布局⽂件:带⼀个图⽚的按钮
android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
android:layout_height="wrap_content"
android:text="程序⼊⼝" />
类MainActivity程序⼊⼝类:
package com.ljq.activity;
import android.app.Activity;
import android.os.Bundle;
/**
* 主程序⼊⼝类
*
* @author jiqinlin
*
*/
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.main);
}
}
下⾯的代码才是开发AppWidget⽤到的代码:
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/png1"/>
l布局⽂件:
xmlns:android="schemas.android/apk/res/android" android:minWidth="75dip"
android:minHeight="45dip"
android:updatePeriodMillis="1000"
android:initialLayout="@layout/my_layout"/>
TestActivity类:
package com.ljq.activity;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
t.ComponentName;
t.Context;
t.Intent;
import android.widget.RemoteViews;
/**
* 为⼿机添加桌⾯控件,当点击桌⾯控件时则进⼊主程序
*
* AppWidgetProvider:继承⾃BroadcastRecevier,在AppWidget应⽤update、enable、disable和delete时接收通知。
* 其中,onUpdate、onReceive是最常⽤到的⽅法,它们接收更新通知
*
* @author jiqinlin
*
*/
public class TestActivity extends AppWidgetProvider {
/**
* ⽤来间隔的更新App Widget,间隔时间⽤AppWidgetProviderInfo⾥的updatePeriodMillis属性定义(单位为毫秒)。
* 注意:SDK1.5之后此android:updatePeriodMillis就失效了,要⾃⼰创建service更新。
* 这个⽅法也会在⽤户添加App Widget时被调⽤,因此它应该执⾏基础的设置,⽐如为视图定义事件处理器并启动⼀个临时的服务Service,如果需要的话。
* 但是,如果你已经声明了⼀个配置活动,这个⽅法在⽤户添加App Widget时将不会被调⽤,
* ⽽只在后续更新时被调⽤。配置活动应该在配置完成时负责执⾏第⼀次更新。
*/
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
System.out.println("onUpdate");
//点击桌⾯组件时进⼊主程序⼊⼝
Intent intent=new Intent(context, MainActivity.class);
PendingIntent Activity(context, 0, intent, 0);
//RemoteViews类描述了⼀个View对象能够显⽰在其他进程中,可以融合layout资源⽂件实现布局。
//虽然该类在android.widget.RemoteViews⽽不是appWidget下⾯,但在Android Widgets开发中会经常⽤到它,
//主要是可以跨进程调⽤(appWidget由⼀个服务宿主来统⼀运⾏的)。
RemoteViews myRemoteViews = new PackageName(), _layout);
//myRemoteViews.setImageViewResource(R.id.imageView, R.drawable.png1);//设置布局控件的属性(要特别注意)
myRemoteViews.setOnClickPendingIntent(R.id.btn, pendingIntent);
ComponentName myComponentName = new ComponentName(context, TestActivity.class);
/
/负责管理AppWidget,向AppwidgetProvider发送通知。提供了更新AppWidget状态,获取已经安装的Appwidget提供信息和其他的相关状态
AppWidgetManager myAppWidgetManager = Instance(context);
myAppWidgetManager.updateAppWidget(myComponentName, myRemoteViews);
}
/**
* 当App Widget从宿主中删除时被调⽤。
*/
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
System.out.println("onDeleted");
}
/**
* 当⼀个App Widget实例第⼀次创建时被调⽤。
* ⽐如,如果⽤户添加两个App Widget实例,只在第⼀次被调⽤。
* 如果你需要打开⼀个新的数据库或者执⾏其他对于所有的App Widget实例只需要发⽣⼀次的设置,
* 那么这⾥是完成这个⼯作的好地⽅。
*/
@Override
public void onEnabled(Context context) {
System.out.println("onEnabled");
}
/**
* 当你的App Widget的最后⼀个实例被从宿主中删除时被调⽤。你应该在onEnabled(Context)中做⼀些清理⼯作,⽐如删除⼀个临时的数据库
*/
@Override
public void onDisabled(Context context) {
System.out.println("onDisabled");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。