android中常用的小控件------Widgets的使用

好久没有写博客了,都不知博客怎么写了,最近突然想写博客,以帮助更多的人,却又不知道写什么好呢?

好吧  我承认我有点懒惰了,可是程序猿是不应该懒惰的哦,俺要做个好孩子。

好了言归正传,开始介绍下今天的主要内容吧!

Widgets一个桌面的小控件    个人认为是很常用的,不知道大神们是不是这么觉得的呢?比如说你开发的一款音乐播放器的软件,可把基本的上一曲和下一曲、暂停的几个功能放在这个小控件里面将它显示在桌面上来,这样就很方便啦,你想要下一曲、上一曲、暂停播放的时候,就不用再打开播放器了,而是直接通过这个小控件就可以实现了,是不是很实用呢?好了下面就来介绍下这款精美的小控件是怎么使用吧!

首先我们来看一下官方的文档:

在官方文档的主页

如果大家想知道有关Widgets的详细信息的,可以到官方文档看一看,这里就不做详细的介绍啦,下面开始怎么写,才是最重要的。

第一步:写一个类继承AppWidgetProvider

public class MyWidgets extends AppWidgetProvider {

}

那大家又有疑问了AppWidgetProvider是什么啊?的确  我刚开始的时候也有这种疑问,下面将来说明;

我们来看一下AppWidgetProvider内的源码

public class AppWidgetProvider extends BroadcastReceiver {
    /**
     * Constructor to initialize AppWidgetProvider.
     */
    public AppWidgetProvider() {
    }

此处省略一部分源码   我们看关键的部分

大家看到了吗

AppWidgetProvider 是继承BroadcastReceiver的,而<pre name="code" class="java">BroadcastReceiver又是一个广播接收者,所以大家又想到了什么呢?

当然是清单文件AndroidManifest.xml啊

android中的四大组件都需要在清单文件AndroidManifest.xml中配置的啦   接下来的第二步就是配置清单文件啦

第二步:在清单文件中AndroidManifest.xml中配置继承AppWidgetProvider的类

那具体怎么配置呢?android官方文档已经给我们示例代码了,我们来看一看

<receiver android:name="ExampleAppWidgetProvider" ><!-- 继承AppWidgetProvider类的完成的包名+类名-->
    <intent-filter><!--意图过滤器,告诉你这个类干什么-->
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /><!--意图过滤器的动作:简单的说就是让你这个类执行什么指令-->
    </intent-filter>
  <!--元数据    1.名字   2.引用的资源   -->
 <meta-data android:name="android.appwidget.provider"
               android:resource="@xml/example_appwidget_info" />
</receiver>

好了到这里我们的清单文件也配置好了,需要注意的是:

是在清单文件中application节点下配置,因为是四大组件   所有需要在统一级别配置

上面的配置中包名+类名的位置可根据自己的包名和类名加以修改,其次是引用资源的时候我们要说一下了

回到我们的程序的结构的res文件夹下面新建一个xml文件,并在文件夹内新建一个xml文件  这里就用官方的文件名,读者可自己修改xml/example_appwidget_info.xml

可是呢?有一个问题来了,那这个xml文件具体怎么写呢?不用担心,android官方文档里面早已有“美女”在等着我们了,等着我们去猎取呢?  好吧  我想歪了    不过还得去看看   是吧   嘿嘿   走起。。。。。。。。

首先我们都应该知道既然是xml文件呢?就需要引入头文件

<?xml version="1.0" encoding="utf-8"?>

接下来就来找  “美女了”  想象一下那是个美女   你会不会很乐意去看呢?

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

好了,既然“美女”我们已经找到了,那我们就来好好研究下吧。

android:minWidth="40dp"   桌面控件默认的宽度
android:minHeight="40dp"  桌面控件默认的高度
<pre name="code" class="html"><span style="font-size:14px;"></span><pre name="code" class="html">android:updatePeriodMillis="86400000"  最短的更新时间   这里是毫秒值   默认是30分钟
android:previewImage="@drawable/preview"  预览的图片   如果不指定图片   就会默认使用应用程序的图片
<span style="font-size:14px;"></span><pre name="code" class="html">android:initialLayout="@layout/example_appwidget"桌面控件的布局   就是我们要显示的布局
<span style="font-size:14px;"></span><pre name="code" class="html">android:configure="com.example.android.ExampleAppWidgetConfigure" 如果你的应用程序没有界面就需要指定相应的参数  一般有界面的程序不用管哦
<span style="font-size:14px;"></span><pre name="code" class="html">android:resizeMode="horizontal|vertical" 压缩的方式  默认水平压缩和垂直压缩
android:widgetCategory="home_screen|keyguard"<span class="high-light-bg">声明你的应用是否控件可以显示在屏幕上</span><span>.</span>
<p class="ordinary-output target-output"><span class="high-light-bg"></span><pre name="code" class="html">android:initialKeyguardLayout="@layout/example_keyguard"  锁定屏幕时的组件布局

好了  到这里我们的资源文件也写完了,  需要提醒大家的是  在开发中  我们并不需要全部的写上  只需要根据我们需要写相应的属性即可

到这一步 我们基本的桌面小控件就已经搭建好了,如果大家还有更多的需求,请参照android提供的官方文档查看。

这里给大家提供一个简单demo

第一步:写一个类继承AppWidgetProvider

public class MyWidgets extends AppWidgetProvider {

	private static final String TAG = "MyWidgets";

	@Override
	public void onDisabled(Context context) {
		super.onDisabled(context);
		Log.i(TAG, "onDisabled");
		//桌面没有控件  就停止服务
		Intent service = new Intent(context, WidgetsUpdateService.class);
		context.stopService(service);
	}

	@Override
	public void onEnabled(Context context) {
		super.onEnabled(context);
		Log.i(TAG, "onEnabled");
		//桌面有控件   开启服务  更新
		Intent service = new Intent(context, WidgetsUpdateService.class);
		context.startService(service);
	}

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		super.onUpdate(context, appWidgetManager, appWidgetIds);
		Log.i(TAG, "onUpdate");
		//开服务
		Intent service = new Intent(context, WidgetsUpdateService.class);
		context.startService(service);
	}

第二步:在清单文件中配置

example_appwidget_info

<receiver android:name="com.androidit.receiver.MyWidgets" >
            <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>

在res资源文件夹下创建一个xml文件夹,新建一个xml文件(请注意 先创建xml文件夹在创建example_appwidget_info文件)

<pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><pre name="code" class="html"><span class="high-light-bg">example_appwidget_info.xml

</span><pre name="code" class="html"><?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="0"
    android:resizeMode="horizontal|vertical"
    android:initialLayout="@layout/process_widget">
</appwidget-provider>

布局文件这里就不附上了,给大家看个最终的图吧,至于什么样的布局 大家自己写吧

如果你对本博客感兴趣,请关注哦,不定期更新android方面的文章







android中常用的小控件------Widgets的使用

时间: 2024-10-17 00:26:01

android中常用的小控件------Widgets的使用的相关文章

android中一个评分的控件

RatingBar android中一个评分的控件 如何使用 Android Studio下: dependencies { compile 'com.hedgehog.ratingbar:app:1.0.2' } 1,在XML中 <com.hedgehog.ratingbar.RatingBar android:layout_marginTop="50dp" android:layout_gravity="center" android:id="@

Android中使用shape来定义控件

本文章转接于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:        <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/>            <!--

Android中使用shape来定义控件的一些显示属性

本人在美工方面一直是比较白痴的,对于一些颜色什么乱七八糟的非常头痛,但是在Android编程中这又是经常涉及到的东西,没办法,只有硬着头皮上. Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:        <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/>

Android中的自定义视图控件

简介 当现有控件不能满足需求时,就需要自定义控件. 自定义控件属性 自定义控件首先要继承自View,重写两个构造函数. 第一个是代码中使用的: public MyRect(Context context) { super(context); } 另一个是资源解析程序使用的: public MyRect(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyled

android中的五大布局(控件的容器,可以放button等控件)

一.android中五大布局相当于是容器,这些容器里可以放控件也可以放另一个容器,子控件和布局都需要制定属性. 1.相对布局:RelativeLayout @1控件默认堆叠排列,需要制定控件的相对位置 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" a

Android中显示进度的控件

显示进度的控件-------------------------ProgressBar:进度条核心属性包括:1) style:表示进度条的显示样式2) android:max:表示进度条的最大刻度3) android:progress:表示进度条当前的进度控制显示进度的方法:void setProgress(int progress)如果进度条没有配置为水平的进度条,则会显示为圆形进度条,这种圆形进度条没有进度的概念,通常用于例如关机.更新系统等时间完全不确定的.亦可以不需要告之用户进度的应用场

UI设计中的各种小控件

xib支持图形化操作,提供了几乎所有的控件可供选择,只需拖动到相应的位置即可,但是控件的后台代码仍然需要手动编写,一定程度上加速了前台的开发. xib快速开发程序,手写代码速度比较慢 xib适合做静态页面,代码适合动态复杂的页面 xib不适合svn/git代码管理,代码比较适合 xib不适合后期维护,代码适合长期维护 如果xib文件名与类所在的文件夹名相同,可以直接使用init方法,自动查找同名的xib资源文件 UISwitch 开关 设置显示时的开关状态 [mySwitch setOn:YES

一些常用的小控件的整理

1.时间控制器   但是需要注意只能在主线程中使用 [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(logBtnClick) userInfo:nil repeats:YES]; 2.延迟调用 [self performSelector:@selector(logBtnClick) withObject:self afterDelay:1]; 3.直接给睡10秒钟再说 [NSThread sleep

android 中通过代码创建控件

package bvb.de.openadbwireless.circle; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.View; impor