让自己的Android应用支持appwidget
2010-12-18 08:04:06 来源:WEB开发网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));
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
cellInfo[0] = (int)event.getX();
cellInfo[1] = (int)event.getY();
return super.dispatchTouchEvent(event);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
LayoutParams lp;
for(int index=0; index< index++)>
lp = (LayoutParams) getChildAt(index).getLayoutParams();
getChildAt(index).layout(lp.x, lp.y, lp.x+lp.width, lp.y+lp.height);
}
}
public static class LayoutParams extends ViewGroup.LayoutParams {
int x;
int y;
public LayoutParams(int width, int height) {
super(width, height);
}
}
}
然后是重点了。还记得系统默认的桌面上,长按的时候出现的上下文菜单吗?里面有好几个选项,选择widget之后,会弹出一个已经安装的widget列表,选择一个widget之后,就会添加到桌面。我们可以把第一步去掉,长按之后,直接弹出已安装的widget列表,这是一个activity,用AppWidgetManager.ACTION_APPWIDGET_PICK这个Intent来启动,必须带上Extras,下面给出代码中有,不详叙。
Java代码
package chroya.demo.widget;
import static android.util.Log.d;
import java.util.ArrayList;
import android.app.Activity;
import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
点击下载:php?id=1365" rel="nofollow">附件下载
更多精彩
赞助商链接