当我#77000000
在另一个片段(我们称之为主片段)上显示一个片段(全屏幕为背景)时,我的主片段仍然对点击作出反应(即使我们没有看到它,我们也可以点击一个按钮).
问题:如何防止点击第一(主)片段?
编辑
不幸的是,我不能只隐藏主片段,因为我在第二个片段上使用透明背景(因此,用户可以看到后面的内容).
为了减少类的依赖,我想将参数(使用泛型类)发送到扩展某些类并实现接口的构造函数,例如
public interface SomeInterface{
public void someMethod();
}
public class MyFragment extends Fragment implements SomeInterface{
//implementation
}
//here is classs, that I need to create. T must extend Fragment and implements
//SomeInterface. But, I'm afraid, if I'll use MyFragment directly, it will create a
//dependence of SomeClass from MyFragment.
public class SomeClass /*generic?*/ {
public SomeClass(T parent);
}
Run Code Online (Sandbox Code Playgroud)
可能吗?
另外,使用我的T类,我想创建视图,使用T.getActivity()作为Context.
我知道可以通过资源ID引用布局中的资源:
android:text="@{@string/resourceName}"
Run Code Online (Sandbox Code Playgroud)
但是,我想通过id引用资源,这只在运行时才知道.举个简单的例子,假设我们有这样的模型:
public class MyPOJO {
public final int resourceId = R.string.helloWorld;
}
Run Code Online (Sandbox Code Playgroud)
现在我需要将此值用作格式字符串中的值.我们称之为
<string name="myFormatString">Value is: %s</string>
Run Code Online (Sandbox Code Playgroud)
最直接的方法不起作用:
android:text="@{@string/myFormatString(myPojo.resourceId)}"
Run Code Online (Sandbox Code Playgroud)
这只会将整数值放入占位符(也证明我正确初始化了我的POJO,所以我不在这里提供整个布局).
我也试过使用@BindingConversion
,但它没有用(实际上是预期的,但我还是试过了) - int
仍然分配给占位符并且没有调用绑定方法.
如何通过DataBinding库中的id显式获取资源?
管理使用此小部件设置基本列表视图,但我没有找到任何方法来更改布局或显示到网格.
在Google I/O 2014上,他们多次提到RecyclerView可以取代gridview以及listview.L预览中的recyclerView的示例和来源不指向与网格相关的任何内容.
如何让回收商像网格一样?
如何处理"向上"按钮(SDK版本11+)?我指的是屏幕顶部的那个,它包含应用程序图标.
在Android Design文章中,它被命名为"向上按钮",但我没有在KeyEvent字段中找到它(或类似的).
这是2017年,我终于开始从Camera1切换到Camera2.在Camera1中,我非常依赖于setPreviewCallbackWithBuffer()
执行实时帧处理,但是在Camera2中,它的工作速度要慢得多,几乎无法使用.
相比之下,在Moto G3上Camera1可以很容易地产生30-40 FPS而在Camera2上我的速度不能超过10-15 FPS.
这就是我的创作方式 ImageReader
imageReader = ImageReader
.newInstance(
previewSize.width, // size is around 1280x720
previewSize.height,
ImageFormat.YUV_420_888, // note, it is not JPEG
2 // max number of images, does not really affect performance
);
imageReader.setOnImageAvailableListener(
callback,
CameraThread.getInstance().createHandler()
);
Run Code Online (Sandbox Code Playgroud)
回调本身可以完成最小的工作:
Image image = reader.acquireNextImage();
image.close();
Run Code Online (Sandbox Code Playgroud)
我已经检查了类似的答案,比如这个.然而他们的问题是他们使用的是JPEG
图像格式而不是YUV_420_888
.
如何实现类似于Camera1的性能?
有没有办法用DataBinding库编写多行代码?
我试过跟随,但它抱怨XML格式
android:text="@{
viewModel.subscriptionExpiration == null
? viewModel.field1
: viewModel.field2
}"
Run Code Online (Sandbox Code Playgroud)
出现以下错误: Error:(80) Error parsing XML: not well-formed (invalid token)
单行替代工作,但我觉得它不太可读:
android:text="@{viewModel.subscriptionExpiration == null ? viewModel.field1 : viewModel.field2}"
Run Code Online (Sandbox Code Playgroud) 如何在java中定义char堆栈?例如,要创建一个String堆栈,我可以使用这样的结构:
Stack <String> stack= new Stack <String> ();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将char放入String时我得到了一个错误:
Syntax error on token "char", Dimensions expected after this token
Run Code Online (Sandbox Code Playgroud) 例如,在我的Activity中我有这样的代码(我跳过变量的初始化):
ImageView iview; //some ImageView
Bitmap b; //some Bitmap
iview.setImageBitmap(b);
Run Code Online (Sandbox Code Playgroud)
问题是 - 如何正确清除iview资源(有无破坏视图)?ImageView会在之后释放它的资源(在本机代码中使用)b.recycle()
吗?
我想,这ImageView的不活动后,只是免费的IT资源onStop
(或onDestroy
).
每次当我尝试assemble
调试应用程序的构建时,更新到gradle 2.10之后我得到了NoSuchMethodError
异常.以下是构建日志的相关部分:
java.lang.RuntimeException: failure, see logs for details.
cannot generate view binders java.lang.NoSuchMethodError: com.google.common.base.Strings.isNullOrEmpty(Ljava/lang/String;)Z
at android.databinding.tool.util.StringUtils.capitalize(StringUtils.java:57)
at android.databinding.tool.util.ParserHelper.toClassName(ParserHelper.java:23)
at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getFullBindingClass(ResourceBundle.java:551)
at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getBindingClassPackage(ResourceBundle.java:541)
at android.databinding.tool.CompilerChef.pushClassesToAnalyzer(CompilerChef.java:124)
at android.databinding.tool.CompilerChef.createChef(CompilerChef.java:73)
at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:148)
at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:82)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:154)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:139)
at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:66)
Run Code Online (Sandbox Code Playgroud)
如您所见,com.google.common.base.Strings.isNullOrEmpty
无法找到Method .
一些细节
我使用Retrolambda 3.2.5
和Java 8.没有其他额外的插件.
构建插件版本: com.android.tools.build:gradle:2.0.0
构建工具版本: 23.0.3
OS: OS X
build.gradle
看起来像这样.我稍微改了一下,不露出一些私密的东西,但问题仍然存在.
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.3'
}
}
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
project.version …
Run Code Online (Sandbox Code Playgroud)