我无法在Android Studio上启动任何模拟器.尝试启动模拟器时,出现以下错误:
Failed to create vm ffffffff
Failed to create HAX VM
No accelerator found.
failed to initialize HAX: Invalid argument
Hax is enabled
Hax ram_size 0x80000000`
Run Code Online (Sandbox Code Playgroud)
我已经卸载了英特尔HAXM,再次安装它,重新启动Android工作室,尝试了不同的系统映像,并为模拟器调整了堆空间.我尝试过不同的设备映像,不同的API级别,并尝试将模拟性能从auto切换到硬件和软件都无济于事.我没有尝试过任何工作.这是我的模拟器的详细信息:
Name: Nexus_6P_API_23
CPU/ABI: Google APIs Intel Atom (x86)
Path: /Users/mobile/.android/avd/Nexus_6P_API_23.avd
Target: google_apis [Google APIs] (API level 23)
Skin: nexus_6p
SD Card: /Users/mobile/.android/avd/Nexus_6P_API_23.avd/sdcard.img
hw.lcd.density: 560
hw.dPad: no
avd.ini.encoding: UTF-8
hw.camera.back: none
disk.dataPartition.size: 800M
hw.gpu.enabled: yes
runtime.network.latency: none
hw.keyboard: yes
runtime.network.speed: full
hw.device.hash2: MD5:9b564b60b1aebee32c73ded9daa1e620
hw.ramSize: 2048
tag.id: google_apis
tag.display: Google APIs
hw.sdCard: yes
hw.device.manufacturer: …Run Code Online (Sandbox Code Playgroud) 我发现大约1/5的测试都是冻结的,经过一些搜索后我把它缩小到了直线:
.ParseInstallation.getCurrentInstallation()saveInBackground();
我正在使用Parse 1.5.1和Android 4.4.2设备.我的应用程序类看起来像:
public class InitApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "my_App_ID", "my_Client_Key");
PushService.setDefaultPushCallback(this, MainActivity.class);
System.out.println("execution DOES reach here");
ParseInstallation.getCurrentInstallation().saveInBackground();
System.out.println("execution DOES NOT reach here");
}
}
Run Code Online (Sandbox Code Playgroud)
我的设备上的行为是,我将首先看到一个空白的白色屏幕约5秒钟,然后屏幕变黑.我不确定屏幕保持黑色多长时间,因为我通常会强行关闭.我让它静置了大约10分钟,没有任何变化.我无法按下后退按钮,屏幕上的任何触摸都不起作用.我被迫使用我的主页按钮,然后强制关闭应用程序.重新打开应用程序后,它的行为和功能正常.
进一步的研究让我找到了这篇文章:https://www.parse.com/questions/android-saveinbackground-lock-the-main-thread
但是,我仍然无法找到解决方案.上述帖子中的一个建议是简单地移动此代码的位置.我在主要活动的onCreate()方法之后尝试了这一点(不要与应用程序的onCreate()方法混淆).行为似乎是正常的,直到我到达调用getCurrentInstallation.saveInBackground()代码的位置,我的应用程序冻结并且无法响应,直到我强制关闭它.
这个问题有什么解决方案吗?
我正在尝试裁剪图像,然后绕过角落,使其在屏幕上看起来更漂亮.
我能够做的是围绕图像的角落,但裁剪有时会切断图像的两侧(取决于图像的大小/纵横比).
所以我想做的是执行裁剪,然后应用圆角.我怎样才能做到这一点?
围绕图像的角落:
private Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff000000;
final Paint paint = new Paint();
final Rect rect = new Rect(0,0,bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundpx = 20;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundpx, roundpx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
Run Code Online (Sandbox Code Playgroud)
然后我像这样设置imageview的scaletype: imageView.setScaleType(ScaleType.CENTER_CROP)
我有一些TextView我想在 Talkback 模式下作为标题或链接宣布的 s。目前,它只是宣布 .html 文件中的文本TextView,但我希望它之后说“标题”,或者根据TextView. 例如,我希望 Talkback 模式宣布“登录 - 标题”而不仅仅是“登录”。
到目前为止我所尝试的是在我的Activity's 中添加这个onCreate():
ViewCompat.setAccessibilityDelegate(v, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setHeading(true);
}
});
Run Code Online (Sandbox Code Playgroud)
在 Talkback 模式下,没有变化 - 它仍然只是宣布“登录”。
我注意到这个方法onInitializeAccessibilityNodeInfo被多次调用。当我在调试器中逐步执行时,每次触发此方法时,它都显示isHeading()为 false,然后设置为 true。
我是否错误地使用了这种方法?为什么要调用很多次?为什么info.setHeading(true)基本被忽略?
我将如何完成类似的事情,但对讲模式宣布“标签 - 链接”而不是标题?
我正在构建我的第一个库模块,我计划为多个项目填充可重用的代码.我的第一个障碍是我需要能够从库模块在主应用程序中启动一个活动.
例如,我有一个启动画面活动.它运行2秒钟,然后启动主要活动.我相信我可以重用这个启动画面活动,我想把它放在我的库模块中.但是,我不确定如何从库中启动主要活动.
主要应用程序设置的主要功能:
<activity
android:name="com.example.myLibraryModule.SplashScreen"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
清单启动了当前驻留在我的库模块中的启动画面.
由于库是主应用程序的依赖,而不是相反,我不知道如何启动MainActivity从我的SplashScreenActivity.这并不像以下那么容易:
Intent i = new intent(this, MainActivity.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud) 我知道我可以通过添加十六进制的 alpha 通道 (#AARRGGBB) 来设置不透明度,但如果我想使用 color.xml 中的值,而我不想添加不透明度,该怎么办?
例如,我在 color.xml 中使用深蓝色 #074EB2,如下所示:
<color name="DarkBlue">#074EB2</color>
Run Code Online (Sandbox Code Playgroud)
现在,我有一个带有边框的自定义按钮背景。我希望边框使用这种深蓝色,但添加了不透明度。该按钮看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/DarkBlue"/>
<corners android:radius="2dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
如何添加不透明度?我需要向 color.xml 添加不透明度的新值吗?IE,<color name="DarkBlueTransparent">#80074EB2</color>?我看到的问题是它不可扩展 - 如果我有其他地方需要这种颜色 80% 不透明度怎么办?90%?我的 color.xml 文件会根据我想要的透明程度而爆炸出不同的值。
我有一个简单的任务,但无法正常工作。我的 xml 中有一个定义如下的按钮:
<Button
android:id="@+id/link1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:minWidth="256dip"
android:minHeight="0dp"
android:text="Button1"
android:textSize="15sp"
android:tag="1"
/>
Run Code Online (Sandbox Code Playgroud)
此按钮连接到片段内的以下侦听器:
final Button link1 = (Button)getActivity().findViewById(R.id.link1);
link1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
System.out.println(link1.getTag().toString());
}
});
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是这个 onClick 方法没有在第一次点击时触发。它从第二次点击开始工作。这是一个非常简单的带有点击监听器的按钮,所以我不确定为什么第一次点击没有被注册。
编辑:我发现不仅按钮在第一次点击屏幕之前不起作用,而且我的 viewpager 的标签在第一次点击屏幕之前不会滚动或被选中。因此,这意味着从一开始直到首先触摸屏幕,应用程序上目前都无法按下手势或按钮。是什么把一切都锁在了外面?
edit2:我的问题的根源是我设置了以下内容:
getWindow().requestFeature(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)
上面代码的目的是删除某些手机上的导航按钮,例如 Nexus 手机。阅读更多:https : //developer.android.com/training/system-ui/navigation.html
包含上述代码后,该应用程序将完全按照预期隐藏手机上的软按钮,但该应用程序将要求我在应用程序的其余部分响应之前执行触摸事件。我将在此基础上提出一个新问题。
我有一个保存的值SharedPreferences是float.我尝试将此保存为int经过一些设计更改之后,但我得到了一个ClassCastException.当我尝试加载此值时抛出异常.
违规行: preferences.getInt(myKey, myDefaultValue)
改编自:preferences.getFloat(myKey,myDefaultValue)`
是否有一种安全的方法从此密钥加载并覆盖此值而无需清除缓存?或者我需要创建一个全新的密钥?
我有一个帐户对象列表:
Account {
val id: String
val description: String
val firstName: String
val lastName: String
}
Run Code Online (Sandbox Code Playgroud)
我想列出帐户列表中存在的所有名字。我怎样才能做到这一点?有没有比这样做更好的方法:
val firstNames = ArrayList<String>()
accounts.forEach { firstNames.add(it.firstName) }
Run Code Online (Sandbox Code Playgroud)