我没有太多成功将动画应用于视图中的视图RemoteViews.
为了简单起见,假设我有一个带有a ImageView和a 的小部件Button.单击按钮时,我想向ImageView添加一个简单的动画(例如旋转).
因为我不能findViewById()像在an中那样使用Activity并且RemoteViews没有动画的setter,所以我不知道该怎么办.
我正在考虑使用新的布局替换窗口小部件的RemoteViews,类似于原始布局,但是这个已经加载了动画.我可以这样做吗?是否可以在布局中嵌入动画?
对于WidgetProvider,代码将是这样的:
Intent intent = new Intent(context, RotateService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.a_widget);
views.setOnClickPendingIntent(R.id.a_button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
Run Code Online (Sandbox Code Playgroud)
然后在RotateService中:
ComponentName myWidget = new ComponentName(this, MyWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews newViews = buildNewRemoteViewsWithAnimation();
manager.updateAppWidget(myWidget, newViews);
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
我想在Canvas上绘制图形,使颜色成为可加.例如,我想生成这个:

但相反,我得到了这个:

请注意,半白色,半黑色背景是有意的,只是为了看看alpha如何与两个背景相互作用.我很乐意在任何一个背景下工作.这是我的代码:
public class VennColorsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
class VennView extends View {
public VennView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int alpha = 60, val = 255;
int ar = Color.argb(alpha, val, 0, 0);
int ag = Color.argb(alpha, 0, val, 0);
int ab = Color.argb(alpha, 0, 0, val);
float w = canvas.getWidth();
float h = canvas.getHeight();
float cx = w / 2f;
float cy = h …Run Code Online (Sandbox Code Playgroud) Eclipse(Helios)中的Run> Debug History菜单项包含调试历史记录的MRU列表.这些项目的编号从1到N表示可能有一些键盘快捷键或键盘序列我应该能够重新启动以前的程序,但我无法弄清楚它们可能是什么.具体来说,如果我想重新启动调试历史记录项目2,我必须键入什么才能使用此功能?
我知道有一个Window> Preference> General> Key settings页面,它列出了"Debug Android Application binding"Alt + Shift_A,D".这看起来就像我想要的但我似乎无法使用它或重新绑定它一些适合我的自定义组合键.请告诉我如何在调试器中最轻松地重新启动Android应用程序?
我正在尝试安装Android SDK以重新开发我的镜头.我正在按照开发人员站点上的步骤安装所有用于Eclipse的工作,但是在安装推荐的SDK Platform-tools时,我收到一个警告,说明文件夹无法移动.我已经关闭了可能访问它的所有内容,但我仍然遇到了这个错误.失败的具体目录是"C:\ Program Files(x86)\ Android\android-sdk\platform-tools."
我已经安装了所有这些,但是卸载它因为我认为我没有时间真正使用它.没有明确的说明我可以找到卸载,所以我尽我所能,并清除了我能找到的一切.难道有可能我在卸载中遗漏了一些让我重新安装的东西吗?
这是一个简化的描述:想象一下,我给了一个View类,它绘制了一张墙的图片,我想用一个切出的窗口绘制它.假设我扩展了View类并覆盖其dispatchDraw()方法以执行以下操作.首先绘制背景,如果有任何要通过窗口看到.接下来我想以某种方式屏蔽矩形窗口区域,然后调用super.dispatchDraw().最后,我想取下面具并画一个站在窗户上的人,这样他们就会在背景和墙壁上画画.我怎样才能做到这一点?
以下是一些看起来与我需要的代码相近的代码:
@Override
protected void dispatchDraw(Canvas into) {
int w = into.getWidth();
int h = into.getHeight();
int w3 = w / 3;
int h3 = h / 3;
into.drawLine(0, 0, w, h, mPaint);
Region protect = new Region(w / 3, h / 3, 2 * w / 3, 2 * h / 3);
into.clipRegion(protect, Op.INTERSECT);
into.drawColor(Color.MAGENTA); // or super.dispatchDraw() here.
}
Run Code Online (Sandbox Code Playgroud)
这给了我这个:

这与我想要的完全相反.请注意上面代码中名为"protect"的区域.我希望洋红色填充发生在除了该区域之外的任何地方.具体来说,我想看到的是:

在窗口的类比中,我应该能够移除限制并以正常方式绘制一个人或某物,这与窗户和墙壁重叠.
编辑:这是Rajesh CP答案的简化工作版本.我还在末尾的所有内容上添加了一个红色的"前景"条纹,以表明我可以删除限制并添加它们.谢谢Rajesh!
public class MaskTest extends Activity {
@Override
protected void onCreate(Bundle …Run Code Online (Sandbox Code Playgroud)