WEB开发网
开发学院手机开发Android 开发 让自己的Android应用支持appwidget 阅读

让自己的Android应用支持appwidget

 2010-12-18 08:04:06 来源:WEB开发网   
核心提示:经常看到一些教程教你如何写appwidget,但是,让自己的Android应用支持appwidget,你知道你的appwidget是如何被添加到桌面上的吗?一般的,如果是做桌面的童鞋,我这里就用一个简单的自定义ViewGroup来搞定,它是以长按的坐标处为要添加的appwidget的起始位置,基本上都会让自己的桌面支持

经常看到一些教程教你如何写appwidget,但是,你知道你的appwidget是如何被添加到桌面上的吗?

一般的,如果是做桌面的童鞋,基本上都会让自己的桌面支持appwidget。下面说说如何实现。

首先是得定义一个承载appwidget的容器,系统的Launcher里面是用的CellLayout,实现的很不错。我这里就用一个简单的自定义ViewGroup来搞定,它是以长按的坐标处为要添加的appwidget的起始位置,简单点说就是按到哪儿就添加到哪儿。

Java代码

package chroya.demo.widget;

import android.content.Context;

import android.view.MotionEvent;

import android.view.View;

import android.view.ViewGroup;

/**

* 承载widget的容器

* @author chroya

*/

public class WidgetLayout extends ViewGroup {

//存放touch的坐标

private int[] cellInfo = new int[2];

private OnLongClickListener mLongClickListener;

public WidgetLayout(Context context) {

super(context);

mLongClickListener = new OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

return false;

}

};

}

public void addInScreen(View child, int width, int height) {

LayoutParams lp = new LayoutParams(width, height);

lp.x = cellInfo[0];

lp.y = cellInfo[1];

child.setOnLongClickListener(mLongClickListener);

addView(child, lp);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

LayoutParams lp;

for(int index=0; index< index++)>

lp = (LayoutParams) getChildAt(index).getLayoutParams();

getChildAt(index).measure(

MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY, lp.width),

MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY, lp.height));


  点击下载:php?id=1365" rel="nofollow">附件下载

1 2 3 4 5 6  下一页

Tags:自己 Android 应用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接