有没有办法让Android Studio的布局预览屏幕用实际运行时布局的占位符视图填充GridView或ListView?
换句话说,我不希望看到"项目1 /子项目1"视图的网格,我希望能够在某处设置@ layout/foo并让它显示在那里.
我试图抓住784 MiB的内存.是的,我知道这对32位手机来说很重要,但以下调用在Android 5.0之前有效:
mmap(0, 0x31000000, PROT_NONE, MAP_ANON | MAP_SHARED, -1, 0);
Run Code Online (Sandbox Code Playgroud)
但是,在不同制造商的三种不同设备上,升级到Android 5.0已经打破了这一局面.我假设这是5.0中内存分配功能的一些变化; 也许需要传递不同的标志?
这是logcat中返回的错误消息:
E/libc? mmap fail (pid 9994, tid 10125, size 822083584, flags 0x21, errno 12(Out of memory))
Run Code Online (Sandbox Code Playgroud) 我有一些文件存储在我的应用程序的内部存储器中,我想在外部应用程序中打开(例如,将图像发送到图库以供查看).我已经设置了FileProvider这样做.
来自AndroidManifest.xml:
<application>
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${packageName}"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/files"/>
</provider>
</application>
Run Code Online (Sandbox Code Playgroud)
来自res/xml/files.xml:
<paths>
<files-path name="internal_logs" path="logs/"/>
<files-path name="shared_files" path="shared/"/>
</paths>
Run Code Online (Sandbox Code Playgroud)
从Fragment我尝试打开文件的位置:
File sharedFolderPath = new File(getActivity().getFilesDir(), "shared");
File toOpen = new File(sharedFolderPath.getAbsolutePath(), sharedFile.getFileName());
if (toOpen.exists()) {
Log.w("File exists: " + toOpen.getAbsolutePath());
Uri fileUri = FileProvider.getUriForFile(getActivity(), BuildConfig.PACKAGE_NAME, toOpen);
Log.w("Attempting to attach file " + fileUri.getEncodedPath() + " with mime type: " + URLConnection.guessContentTypeFromName(fileUri.toString()));
Intent viewFile = new Intent(Intent.ACTION_VIEW);
viewFile.setData(fileUri);
viewFile.setType(URLConnection.guessContentTypeFromName(fileUri.toString())); …Run Code Online (Sandbox Code Playgroud) 我正在尝试CardView在旋转动画中使用Android的新功能.然而,当CardView的rotationY属性设置得足够高,一些非常不好的事情发生在棒棒糖设备.这是一些非常容易编译的示例代码:
MainActivity.java:
public class MainActivity extends Activity {
private CardView mTestView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTestView = (CardView) findViewById(R.id.test_view);
mTestView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mTestView.animate()
.rotationY(360)
.setDuration(3000);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.CardView
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/test_view">
</android.support.v7.widget.CardView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
单击视图后,您将看到完整的旋转动画,其中包含Material Design阴影和所有内容.但是一旦卡的旋转角度超过大约60°,它将停止渲染,或渲染几帧而不清除前一帧,或两者的某种混合.这一直持续到卡的角度回到此阈值以下.
现在,这个动画设置为3秒 - 这是荒谬的.以更逼真的动画速度(例如,动画持续时间300毫秒),这仍然是可见的,但实际上看起来只是一个临时的微动.
这似乎是框架中的一个可能的错误 - 但也可能是我需要调用一些额外的方法来允许旋转没有问题.想法?
注意:通过调用View.setCameraDistance()来设置摄像机距离并不能解决问题.事实上,如果你只是用一个疯狂的高(~100,000)距离编译上面的代码,问题仍然会发生,但角度阈值更高(大约80-85,如果我不得不猜测.)
我正在尝试在我的bash脚本中进行简单的文件存在检查:
FILE_TO_CHECK=/home/username/path/to/file
if [ ! -f $FILE_TO_CHECK]; #line 9 in actual script
then
echo File not found.
fi
Run Code Online (Sandbox Code Playgroud)
对我来说似乎很简单,但我收到以下错误,我不知道为什么:
/path/to/script: line 9: [: missing `]'
Run Code Online (Sandbox Code Playgroud)
我不是一个bash专家,但我很确定在这种情况下不需要反击.是什么赋予了?
我正试图以我的行动栏为主题.当我应用我的主题时,预览(在Android Studio中)会正确呈现它,但在设备上运行时,操作栏完全丢失.
我的values/styles.xml文件:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<item name="android:windowBackground">@color/background_gray</item>
<item name="android:actionBarStyle">@style/GreenActionBar</item>
</style>
<style name="AppTheme" parent="AppBaseTheme"/>
<style name="GreenActionBarBase">
<item name="android:background">#00c341</item>
</style>
<style name="GreenActionBar" parent="GreenActionBarBase"/>
</resources>
Run Code Online (Sandbox Code Playgroud)
预习:

运行:

我错过了什么?
我在托管代码中创建了一个缓冲区:
var nativeBuffer = ShortArray(bufferSize)
Run Code Online (Sandbox Code Playgroud)
这是 Kotlin 代码,但根据stdlib 文档,此语法实际上是返回short [].
然后我想使用 JNI 从 C++ 写入此缓冲区:
JNIEXPORT void JNICALL Java_package_class_name_readNext
(JNIEnv * env, jclass clazz, jshortArray javaArray)
{
jboolean * isCopy;
short * targetArray = env->GetShortArrayElements(javaArray, isCopy);
// Do stuff to targetArray
}
Run Code Online (Sandbox Code Playgroud)
问题是GetShortArrayElements调用总是会导致崩溃,并出现以下墓碑:
11-07 21:23:53.610 86-86/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-07 21:23:53.610 86-86/? I/DEBUG: Build fingerprint: 'generic/vbox86p/vbox86p:5.1/LMY47D/buildbot06092001:userdebug/test-keys'
11-07 21:23:53.610 86-86/? I/DEBUG: …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个Android应用程序,其中包括一个节拍器.这需要能够定期以准确的时间播放各种声音,但是现在我正在努力让一个人工作.训练有素的听众很容易检测到超过2-3ms的误差.这是我的播放主题:
protected void onCreate(Bundle savedInstanceState) {
// stuff
int minBufferSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM);
}
public void startThread(View view){
mThread = new Thread (new Runnable() {
public void run(){
Log.d(TAG, "Starting met at tempo: " + mTempo + " Interval: " + (60000 / mTempo) );
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
InputStream in = getResources().openRawResource(R.raw.chirp);
byte [] output = getBytesFromStream(in);
Log.d(TAG, "Output length: " + output.length);
mAudioTrack.play();
while (mRunning) {
mAudioTrack.write(output, 0, output.length);
try { …Run Code Online (Sandbox Code Playgroud)