在我的申请中,我LinearLayout
正好在彼此之上.通过一个菜单选项,我希望能够使底部消失,让顶部的一个落在消失的上面LinearLayout
.
问题是,我不知道如何在Java中这样做.
它不需要动画,我想隐藏Layout
另一个活动(菜单)的返回,在OnActivityResult
.菜单activity
设置了boolean
我签入的内容OnActivityResult
,根据它的值,我确定是否需要隐藏或显示底部Layout
:
// Only change value if it is different from what it was.
if(mUseVolumeButtonAsPTT != resultData.getBoolean("UseVolumeButtonAsPTT")){
mUseVolumeButtonAsPTT = resultData.getBoolean("UseVolumeButtonAsPTT");
if(!mUseVolumeButtonAsPTT){
// Hide lower LinearLayout.
} else {
// Show lower LinearLayout.
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一个关于如何做到这一点的提示或链接?
我有一个非常复杂的View构建,作为其中的一部分,我在ScrollView中的LinearLayout内部有一个ListView(还有很多组件,但在这个问题上它们并不重要).
现在整个活动滚动得很好,但ListView的高度有限,当它里面的项目超过高度时,我的屏幕消失了.我试图将ListView放在它自己的ScrollView中,但这不起作用.当我尝试在ListView上滚动时,选择了主ScrollView并且我的屏幕滚动而不是ListView.
我的问题可能听起来很简单,但我无法解决这个问题......是否有可能使ListView可滚动?
相关的XML:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:id="@+id/GlobalLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView android:id="@+id/EndpointList"
android:choiceMode="multipleChoice"
android:layout_height="175dip"
android:layout_width="fill_parent" />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud) 我知道有可能将我的开发机器的端口转发到Android模拟器,但是如何完成?我已经在android-developers网站上找到了解决方案,但是我看不出他们的意思是如何表达他们的......有人对此有明确的指示吗?我的开发机器正在运行Windows.
我的应用程序中有一个AudioTrack,设置为Stream模式.我想写一些通过无线连接收到的音频.AudioTrack声明如下:
mPlayer = new AudioTrack(STREAM_TYPE,
FREQUENCY,
CHANNEL_CONFIG_OUT,
AUDIO_ENCODING,
PLAYER_CAPACITY,
PLAY_MODE);
Run Code Online (Sandbox Code Playgroud)
参数定义如下:
private static final int FREQUENCY = 8000,
CHANNEL_CONFIG_OUT = AudioFormat.CHANNEL_OUT_MONO,
AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT,
PLAYER_CAPACITY = 2048,
STREAM_TYPE = AudioManager.STREAM_MUSIC,
PLAY_MODE = AudioTrack.MODE_STREAM;
Run Code Online (Sandbox Code Playgroud)
但是,当我使用write()将数据写入AudioTrack时,它将播放不稳定...调用
byte[] audio = packet.getData();
mPlayer.write(audio, 0, audio.length);
Run Code Online (Sandbox Code Playgroud)
只要通过网络连接接收到数据包就会生成.有没有人知道为什么它听起来不稳定?也许它与WiFi连接本身有关?我不这么认为,因为当我通过UDP将数据从Android手机发送到另一个来源时,声音听起来并不可怕.声音听起来完整而且根本没有波动......所以有人知道为什么会发生这种情况吗?
对于网站,我需要能够启动和停止守护进程.我目前正在做的是
exec("sudo /etc/init.d/daemonToStart start");
Run Code Online (Sandbox Code Playgroud)
守护进程已启动,但Apache/PHP挂起.做一个ps aux
透露sudo
自己变成了一个僵尸进程,有效地杀死了所有进一步的进展.尝试从PHP启动一个daeomon时这是正常的行为吗?
是的,Apache有权执行该/etc/init.d/daemonToStart
命令.我修改了/ etc/sudoers文件以允许它这样做.不,我不允许Apache能够执行任何类型的命令,只有少数几个允许网站工作.
无论如何,回到我的问题,有没有办法允许PHP以不创建僵尸进程的方式启动守护进程?我问这个是因为当我反向操作时,停止已经启动的守护进程,效果很好.
如果我想在那里放置null,我需要为属性添加什么?
例如,这段代码:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/ef_gradient_blue" />
<item android:drawable="@null" />
</transition>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我的应用程序在尝试加载此drawable时崩溃了.我需要它为null,因此它可以从完全不透明转换为完全透视.
在我的Java中,我加载它像这样:
mTransitionBlue = (TransitionDrawable)mProjectResources.getDrawable(R.drawable.transition_blue);
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个运行时异常,说它找不到transition_blue.xml,这是之前指定的XML.那我该怎么做呢?
我有NDK的问题.
在我的JNI_OnLoad方法中,我缓存了JavaVm指针,调用该方法的类以及稍后使用的方法ID:
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved){
JNIEnv *env;
cachedJVM = jvm;
if((*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_6)){
LOG_ERROR("Could not get JNIEnv*");
return JNI_ERR;
}
javaClass = (*env)->FindClass(env, "org/test/opensl/AudioProcessor");
if(javaClass == NULL){
LOG_ERROR("Could not get java class");
return JNI_ERR;
}
javaCallbackMID = (*env)->GetMethodID(env, javaClass, "enqueueAudio", "([B)V");
if(javaCallbackMID == NULL){
LOG_ERROR("Could not get method identifier");
return JNI_ERR;
}
return JNI_VERSION_1_6;
}
Run Code Online (Sandbox Code Playgroud)
我有一个小的实用程序方法定义如下,应该给我一个指向JNIEnv的指针:
JNIEnv* JNU_GetEnv(){
JNIEnv* env;
(*cachedJVM)->GetEnv(cachedJVM, (void**)&env, JNI_VERSION_1_6);
return env;
}
Run Code Online (Sandbox Code Playgroud)
最后,我有一个来自OpenSL ES的回调SLAndroidSimpleBufferQueueItf
,我想从以下处理录制的音频SLRecordItf
:
void recorderCallback(SLAndroidSimpleBufferQueueItf bq, void …
Run Code Online (Sandbox Code Playgroud) 只是为了确认.当通过OpenSL ES for Android创建的音频播放器完成播放缓冲区时,垃圾收集器会自动释放该缓冲区吗?或者我需要自己释放缓冲区吗?
如果是后者,我可以使用一些帮助.但就目前而言,我不会发布任何代码,直到我被告知我需要自己做...
我有一个C#项目,在一个解决方案中有两个名称空间.我已经记录了两个命名空间中的所有类/函数/成员/等.由于这个项目是一个小型研究项目,名称空间是DocTestLibrary
和DocTestLibrary.Events
.但是,当我尝试通过Sandcastle从它创建文档时,它只会为DocTestLibrary
命名空间创建文档.我需要在Sandcastle中进行任何设置才能完成这项工作吗?我对此表示怀疑,因为我已经仔细研究了大部分内容.
奇怪的是,Doxygen能够很好地生成文档.
为了提供更多信息,我检查了Sandcastle为构建生成的日志.看来这个条目导致其余的不显示.
Warn: ResolveReferenceLinksComponent2: Unknown reference link target 'T:DocTestLibrary.Events.DemoEvent'.
Run Code Online (Sandbox Code Playgroud)
我也发现了别的东西.
该DocTestLibrary
命名空间包含两个类:
顾名思义,StaticHelper是一个只有静态方法的辅助类.然而,Sandcastle也否认要处理这个文件.只有TestClass得到了处理.只是让我感到困惑的是,在日志中没有关于此的条目.
我的情况:我有一个接受字节数组的方法.有问题的数组使用UTF-8编码,最初是XML消息.我希望能够使用DOM解析器重新构造此消息.我知道我可以通过使用a从字节数组创建一个Document ByteBuffer
.唯一的问题是,如果我将它直接放在传递的字节数组上,它将创建一个损坏的文档(如果可能的话).这是因为该数组是编码的XML消息,以UTF-8编码.但是,当我通过使用decode()方法解码数组时,我得到一个CharBuffer返回:
ByteBuffer encodedData = ByteBuffer.wrap(data);
CharBuffer decodedData = Charset.forName("UTF-8").decode(encodedData);
Run Code Online (Sandbox Code Playgroud)
我不知道如何从这个构造Document,因为在DocumentBuilder中没有定义将接受CharBuffer的parse()方法....
任何人都可以帮我这个吗?
我有一个日志设置,其中有两种类型的日志消息:
这些属性定义如下:
BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", trivial::severity_level)
BOOST_LOG_ATTRIBUTE_KEYWORD(tag_attr, "Tag", std::string)
Run Code Online (Sandbox Code Playgroud)
我想创建一个过滤器功能,允许根据 2 个标准中的任何一个将消息添加到我的日志中(请注意,基于自定义标记属性的日志消息始终与严重性级别信息一起打印,基于平凡记录器的严重性水平)。
所以我想要一个过滤器,它允许基于消息是否具有自定义标签的消息,如果没有,则基于消息的严重性。
我试图有一个相对简单的过滤器,它执行以下操作:
sink_->set_filter(
trivial::severity >= severityLevel
|| (expr::has_attr(tag_attr) && tag_attr == "JSON" && logJson_)
);
Run Code Online (Sandbox Code Playgroud)
但是,severityLevel 可能是 Debug、Info、Warning、Error 或 Fatal,如果级别配置为 Debug 或 Info,则过滤器将忽略自定义标记属性。
我曾尝试使用 c++11 lambda,如下所示:
sink_->set_filter([this, severityLevel](const auto& attr_set) {
if (<condition for custom tag first>) {
return true;
} else if (<condition for severity level second>) {
return true;
} else {
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但后来我不知道如何实际检查我的条件。我尝试了以下方法:
if (attr_set["Tag"].extract<std::string>() == "JSON" && logJson_) …
Run Code Online (Sandbox Code Playgroud) 这段C#代码的相应Java代码是什么?
public static readonly DateTime Epoch = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public static long Now
{
get { return (long)(DateTime.UtcNow - Epoch).TotalMilliseconds; }
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以用一个Date
对象计算这个,但是不是Calendar
来自Java的C#的DateTime不同吗?
目前我使用这篇Java作品:
public static long getCurrentTimeMillis(){
TimeZone here = TimeZone.getDefault();
Time time = new Time(here.toString());
time.setToNow();
return time.toMillis(false);
}
Run Code Online (Sandbox Code Playgroud)
但是这两段代码之间的区别很大...... C#代码比Java代码多出150万毫秒......我怎样才能从Java代码中获得正确的时间(以毫秒为单位)?
我需要知道如何检测Wi-Fi网络中的交换机,虽然是自动或手动,但这并不重要.当检测到开关时,整个系统是否有某种意图被广播?或者我是否必须通过调用ConnectivityManager上的方法手动检查是否选择了新网络?
android ×9
java ×3
android-ndk ×2
c ×2
c# ×2
audio ×1
boost-log ×1
daemon ×1
dom ×1
filtering ×1
ip ×1
listview ×1
networking ×1
opensl ×1
php ×1
sandcastle ×1
scrollable ×1
time ×1
xml ×1