这一定是一个简单的,但我真的很茫然......以下代码绘制了一个矩形,其线性渐变从左到右,从白色到黑色,
int x1 = 0, y1 = 0, x2 = 100, y2 = 40;
Shader shader = new LinearGradient(x1, y1, x2, y2, Color.WHITE, Color.BLACK, TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
canvas.drawRect(new RectF(x1, y1, x2, y2), paint);
Run Code Online (Sandbox Code Playgroud)
好的.现在我要做的是将此渐变更改为水平渐变,使颜色从白色变为黑色,从上到下.我试图做的是添加:
Matrix trans = new Matrix();
trans.setRotate(90);
shader.setLocalMatrix(trans);
Run Code Online (Sandbox Code Playgroud)
但相反,渐变是一个有趣的天使,或者只有一种颜色......我也试图以各种方式玩渐变的坐标(认为可能它们应该被转换)无济于事.我错过了什么?
在我的应用程序中,我有一个带有页脚的ListView,其中包含一个带有EditText的自定义视图.顶部有一个动作栏.当前活动使用SOFT_INPUT_ADJUST_RESIZE(adjustResize)作为软输入模式,并且在滚动时不关闭键盘.
为了显示更多列表,我想在滚动时移除键盘并获得更平滑的滚动行为,我想要更改以便使用SOFT_INPUT_ADJUST_PAN(adjustPan).但是,如果我改为adjustPan,则整个视图(包括操作栏)会被推高.我希望列表视图被推送,但操作栏始终保持在顶部.这可能吗?如果没有,是否可以使用adjustResize并获得平滑的调整大小动画?
到目前为止,我尝试过:
Window.FEATURE_ACTION_BAR_OVERLAY,但这没有帮助,虽然文档听起来很有希望.adjustResize,由于滚动时发生的绘图行为,最小化键盘并同时调整列表视图的大小,我已排除了这一点.有没有办法制作流畅的动画调整大小?android android-layout android-softkeyboard android-windowmanager android-actionbar
我正在编写一个针对API级别15的Android应用程序,但我也希望保持与旧API级别(min-sdk 7)的向后兼容性.
我将通过根据当前API级别决定使用哪些代码来实现这一目标(如下所示).我想这是一个好办法,我只想问是否确定有这么多不赞成的方法(像display.getWidth()),因为API级别8和15之间.如果是的话相当多的变化,如果它是一个良好的使用@SuppressWarning("deprecation")在这个案例?
例如,对于API级别<= 8和> = 9,使用多个APK不是更好吗?(尽管developer.android.com不推荐这样做.
Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Point screenSize = new Point();
// calculate the width
float width;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(screenSize);
width = screenSize.x;
} else {
width = display.getWidth();
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
来自Symbian世界,我习惯尽可能多地使用堆来避免堆栈空间耗尽,尤其是在处理描述符时.CBase派生类总是在堆上动态分配,因为如果它们不是,它们的成员变量将保持未初始化.相同的约定是否适用于QObject派生类?
在Qt中,将(例如QString)放在堆栈上似乎很常见.当QString充当堆栈上的容器时,字符串内容是否放在堆上,或者是否所有内容都放在堆栈上?
我有一个应用程序,它使用两个进程来显示 UI 组件 - 一个用于主应用程序,它使用常规活动,另一个应用程序的 UI 由覆盖层(位于 Service 中)组成,这些覆盖层使用 ViewManager API 添加到 WindowManager中。我想使用 UiAutomator 测试叠加层和应用程序之间的交互。
如本问题所述,覆盖视图/窗口很难直接访问。如果我将覆盖层移至主进程,我可以通过使用反射调用 WindowManagerGlobal 上的方法来访问视图,就像 Appium 在此处所做的那样,但如果它们在覆盖层进程中运行,则对 WindowManagerGlobal 的调用不会返回视图。在任何情况下,测试都无法与视图交互,因为只有创建视图的线程才能访问它们,除非通过 UiAutomator 使用的辅助功能框架来访问它们。
有什么方法可以通过辅助功能框架公开覆盖视图,以便 UiAutomator 可以找到它们,即使它们在不同的进程中运行?
我查看了multiprocess Espresso,这听起来非常有前途,因为它有可能弥合两个进程之间的差距,但 Espresso 找不到覆盖视图。是否可以改变添加叠加层的方式,也许可以通过为该过程提供某种根窗口,让 UiAutomator 甚至可能是 Espresso 找到叠加视图?
如果我使用UiDevice转储视图层次结构,我确实会看到系统装饰视图与应用程序的视图位于同一级别。我查看了将视图添加到 WindowManager 的 SystemUI 代码,它与应用程序添加其叠加层的方式非常相似。与我所看到的唯一区别是图层类型。了解系统 UI 组件如何注入到该层次结构(没有更好的词),以及是否可以对应用程序创建的覆盖层执行相同的操作,这将是很有趣的。
android accessibility android-windowmanager android-uiautomator