我在新的 Android Studio (4.0) 中的 Layout Inspector 中看不到任何更新。
我的应用程序面向 API 29,构建工具版本是buildToolsVersion '29.0.3'.
我正在运行模拟器Pixel_2_api_29和我的设备MI A3 OS version 10。
我正在尝试做一个旋转图像动画.我需要像在进度条中那样围绕自己旋转图标,但我得到的是围绕圆圈旋转的图像.这是我的动画代码
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2500"
android:repeatCount="infinite"
android:repeatMode="restart"
/>
Run Code Online (Sandbox Code Playgroud)
我在哪里错了?谢谢
我正在使用Jackson来对Retrofit的Json响应进行反序列化.
我有一些数据类,其中包含Java表示为基元的某些值的默认值,因此在没有空检查的情况下访问它时不会崩溃.
这一切都在调试模式下运行良好,但是当我在启用了pro guard的版本上运行时,默认值未设置且这些值为null,导致我的应用程序在从Java访问它们时会崩溃,假设基元.
我试图添加我在网上找到的所有专业守卫规则:)但没有成功.
如果有人有任何想法,请分享.
谢谢
数据类的示例
data class RideTask(@JsonProperty(RiderFrontendConsts.PARAM_LOCATION)
val location: UserVisibleLocation?,
@JsonProperty(RiderFrontendConsts.PARAM_ETA_TS)
val etaTime: Double?,
@JsonProperty(RiderFrontendConsts.PARAM_TIME_TO_COMPLETION)
val timeToCompletion: Double?,
@JsonProperty(RiderFrontendConsts.PARAM_ETA_DESCRIPTION)
val etaDescription: String?,
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonProperty(RiderFrontendConsts.PARAM_INTERNAL_ETA_TS)
val internalEta: Long? = 0,
@JsonProperty(RiderFrontendConsts.PARAM_ETA_DESCRIPTION_LIST)
val etaDescriptionList: List<String>?,
@JsonProperty(RiderFrontendConsts.PARAM_DESCRIPTION_PREFIX)
val descriptionPrefix: String?,
@JsonProperty(RiderFrontendConsts.PARAM_WALKING_DISTANCE_DESCRIPTION)
val walkingDistanceDescription: String?,
@JsonProperty(RiderFrontendConsts.PARAM_WALKING_DISTANCE_IN_METERS)
val walkingDistanceInMeters: Int? = 0)
: Serializable
Run Code Online (Sandbox Code Playgroud)
改造和杰克逊初始化
private Retrofit getRetrofit() {
LOGGER.debug("prepare retrofit");
return new Retrofit.Builder()
.client(getHttpClient(RiderFrontendConsts.DEFAULT_TIMEOUT_IN_MILLIS))
.baseUrl(SettingsManager.getInstance(Application.getInstance()).getServerBaseUrl())
.addConverterFactory(JacksonConverterFactory.create(getObjectMapper()))
.callbackExecutor(Executors.newCachedThreadPool())
.build();
}
private static ObjectMapper getObjectMapper() {
LOGGER.debug("prepare …Run Code Online (Sandbox Code Playgroud) 我有一个用于Espresso测试的库,当我添加到我的项目时,我无法编译我的测试.
Gradle输出此错误
Caused by: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger$8.updateIndex(DexMerger.java:565)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:574)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:166)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Run Code Online (Sandbox Code Playgroud)
这真的很奇怪,因为我已经在我的项目中启用了multiDex
我的项目build.gradle
defaultConfig {
minSdkVersion 16
targetSdkVersion 21
versionName versionNameFromGitTagVia()
versionCode versionCodeFromJenkins()
multiDexEnabled true
testInstrumentationRunner "app.test.general.InstrumentationRunner" ...
}
dependencies {
...
androidTestImplementation project(':test-utils')
...
implementation 'com.android.support:multidex:1.0.2'
}
Run Code Online (Sandbox Code Playgroud)
我的应用类
public class RiderApplication extends MultiDexApplication implements Application.ActivityLifecycleCallbacks,
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
....
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest
<application
android:name=".RiderApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/MyAppTheme"
tools:replace="android:theme,android:icon">
Run Code Online (Sandbox Code Playgroud)
删除库可以解决问题
有什么建议?
编辑 我尝试用几种方法解决它,我发现只有当我将库包含在内时才会发生这种情况
androidTestImplementation
Run Code Online (Sandbox Code Playgroud)
但是当作为常规使用时
implementation
Run Code Online (Sandbox Code Playgroud)
dex错误消失了
真奇怪 …
我有一个recylcler视图,但似乎没有实现setGravity方法.
我的列表是水平对齐的,但我需要它居中.我怎么做?
fragment_my_zone_item_controlled.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_grey">
<FrameLayout
android:id="@+id/fragment_my_zone_item_controlled_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/fragment_my_zone_item_controlled_tabs"
android:layout_marginBottom="12dp"
android:layout_marginTop="12dp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/fragment_my_zone_item_controlled_tabs"
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="@color/action_bar_color"
android:scrollbars="none" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这就是它的外观,我需要它的中心
感谢你们
我有一个视频视图,显示来自网络的内容.当我使用Android 4.2玩nexus 7时,它可以正常工作,但是当我在GS3上播放时,会返回错误1004 IO错误.有谁知道为什么会这样?
如果您需要代码,我会在这里发布.谢谢
我正在尝试收听我创建的媒体播放器的OnInfoListener,以便在缓冲开始和结束时获取.
由于某种原因,事件永远不会发生.
这是我的初始化代码
private void initPlayer(Surface s){
mPlayer = new MediaPlayer();
mPlayer.setSurface(s);
mPlayer.setOnCompletionListener(this);
mPlayer.setOnErrorListener(this);
mPlayer.setOnInfoListener(this);
mPlayer.setOnPreparedListener(this);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.setDataSource(file_url);
mPlayer.prepare();
} catch (IllegalArgumentException e) {
OnError(PLAYER_ERRORS.player_not_loaded, e.getMessage() + "");
} catch (SecurityException e) {
OnError(PLAYER_ERRORS.player_not_loaded, e.getMessage() + "");
} catch (IllegalStateException e) {
OnError(PLAYER_ERRORS.player_not_loaded, e.getMessage() + "");
} catch (IOException e) {
OnError(PLAYER_ERRORS.no_connection, e.getMessage() + "");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的倾听者
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START)
{
OnEvent(PLAYER_EVENT.buffering_start);
}
else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_END) …Run Code Online (Sandbox Code Playgroud) 我正在考虑在生产应用程序中使用Realm.io作为我的ORM.
据我所知,RealmResults对象存储在BackendStore(磁盘)而不是RAM中,因为RealmResult只是保存在数据库中的真实对象的代理.
所以我的问题是,鉴于Java对象存储在RAM中,读取RealmObject的字段与从普通Java对象读取它的速度一样快.我的应用程序中有很多读数,我担心这会影响响应能力.
在我的应用程序中,我从服务器下载电影.其中一些非常大(4gb或更多).我试图将我自己的下载管理器作为一项服务实现,但它并没有放弃.在某些设备上,应用程序只是在没有任何通知的情况下崩溃,整体下载似乎太慢了.
所以,我想使用Android的默认DownloadManager,但我唯一的问题是我无法暂停/恢复它.
有没有办法实现呢?
我在 kotlin 中使用mockk进行测试。但我似乎无法覆盖间谍对象中的私有属性。
我有这个对象
private val driverMapSnapshotMap: MutableMap<Int, SnapshotImage> = mutableMapOf()
Run Code Online (Sandbox Code Playgroud)
在我监视使用的课程中
viewModel = spyk(DriverListViewModel(), recordPrivateCalls = true)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试用模拟值填充它时,我收到错误
every {
viewModel getProperty "driverMapSnapshotMap"
} returns(mapOf(1 to mockkClass(SnapshotImage::class)))
Run Code Online (Sandbox Code Playgroud)
我得到的错误
io.mockk.MockKException: Missing calls inside every { ... } block.
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?