小编Gui*_*shh的帖子

适用于Android的功能发现动画

自5月以来,Google已在其网站上更新了材料设计指南.我在一个名为Feature discovery的新部分中看到了一个有趣而酷的设计模式.

我想实现动画"发现"导航抽屉按钮.导航抽屉和浮动操作按钮的最后一次Google Fit更新中有类似的动画.

通常,对于Android动画,Google提供了一个很棒且非常棒的UI指南,但是我们没有任何进一步的信息来为我们自己的应用程序开发它.

你知道是否有Android库的原生解决方案来实现这些动画?如果是,它是否适用于Android 5.0以下(API 21) - 它可以高于Android 4.1+?

编辑:我做了一个Github项目来实现相同的动画.你可以在这里找到它:https://github.com/Guimareshh/Feature-discovery-animations

谢谢 !

android android-animation material-design

37
推荐指数
2
解决办法
3990
查看次数

我们如何获取可组合项在屏幕中的位置/大小?

在 Compose 中,我们如何获取可组合项在屏幕中的位置或大小?例如,我试图将地图相机聚焦在特定边界之间并添加填充。这里我需要获取与寻呼机顶部位置和TopBar底部位置相对应的填充。

在此输入图像描述

目前该屏幕的代码如下:

BoxWithConstraints {
        MapViewWithMarkers(...)
        TopAppBar(
            modifier = Modifier
                .fillMaxWidth()
                .statusBarsPadding(),
            backgroundColor = Color.Transparent,
            elevation = 0.dp,
        )
        HorizontalPager(
            state = pagerState,
            modifier = Modifier
                .align(Alignment.BottomCenter)
                .fillMaxWidth()
                .navigationBarsPadding()
                .padding(bottom = 32.dp),
            itemSpacing = 8.dp,
        ) { page ->
            val hikeOnMapCard = hikeMarkerList[page]
            HikeOnMapCard(hikeOnMapCard) {
                viewModel.hikeOnMapCardClicked(hikeOnMapCard.id)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想将与此屏幕上的 TopAppBar 大小和 Pager 大小相对应的填充转发给 MapViewWithMarkers Composable

谢谢 !

android android-jetpack-compose

25
推荐指数
1
解决办法
2万
查看次数

无法解析符号'tools'和'GradleException'

我已经开始研究包括Android NDK在内的现有项目.我在build.gradle中有两个问题,我不可能构建应用程序.为了您的信息,我的同事(正在研究它)能够构建应用程序.

我已经从项目结构中导入了NDK,我可以看到正确的Android NDK路径.

以下是build.gradle的样子:

import org.apache.tools.ant.taskdefs.condition.Os

buildscript {
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    // The Fabric Gradle plugin uses an open ended version to react
    // quickly to Android tooling updates
    classpath 'io.fabric.tools:gradle:1.21.5'
}
}
allprojects {
repositories {
    maven { url "https://jitpack.io" }
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'realm-android'

repositories {
maven { url 'https://maven.fabric.io/public' }
}

android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
dataBinding{
    enabled = true;
} …
Run Code Online (Sandbox Code Playgroud)

android gradle android-ndk

22
推荐指数
3
解决办法
1万
查看次数

OkHttp和Retrofit,用并发请求刷新令牌

在我的应用程序中,我实现了Retrofit来调用WebServices,我使用OkHttp来使用Interceptor和Authenticator.有些请求需要令牌,我已经实现了Authenticator接口来处理刷新(遵循官方文档).但我有以下问题:在我的应用程序中不时,我必须立即调用多个请求.因此,对于其中一个我将有401错误.

这是我的请求调用代码:

public static <S> S createServiceAuthentication(Class<S> serviceClass, boolean hasPagination) {

        final String jwt = JWT.getJWTValue(); //Get jwt value from Realm

        if (hasPagination) {
            Gson gson = new GsonBuilder().
                    registerTypeAdapter(Pagination.class, new PaginationTypeAdapter()).create();

            builder =
                    new Retrofit.Builder()
                            .baseUrl(APIConstant.API_URL)
                            .addConverterFactory(GsonConverterFactory.create(gson));
        }

        OkHttpClient.Builder httpClient =
                new OkHttpClient.Builder();

        httpClient.addInterceptor(new AuthenticationInterceptor(jwt));
        httpClient.authenticator(new Authenticator() {
            @Override
            public Request authenticate(Route route, Response response) throws IOException {
                if (responseCount(response) >= 2) {
                    // If both the original call and the call with refreshed token …
Run Code Online (Sandbox Code Playgroud)

android retrofit2 okhttp3

8
推荐指数
1
解决办法
1992
查看次数

Jacoco 报告不排除指定文件

我正在使用 Jacoco 0.8.5 和 Gradle 6.4,我有一个Android 项目,我正在尝试设置我的代码覆盖率。这是我的 jacoco.gradle 文件的方式:

apply plugin: 'jacoco'

def flavor = "debug"
def unitTestTask = "testDebugUnitTest"

jacoco {
    toolVersion = "0.8.5"
}

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
}

final androidExcludes =
        ["**/R.class",
         "**/R\$*.class",
         "**/BuildConfig.*",
         "**/Manifest*.*",
         "**/*Test*.*",
         "android/**/*.*",
         "**/*_MembersInjector.class",
         "**/Dagger*Component.class",
         "**/Dagger*Component\$Builder.class",
         "**/*Module_*Factory.class",
         "**/*_Provide*Factory*.*",
         "**/*_Factory*.*",
         "**/*Activity*.*",
         "**/*Fragment*.*",
         "**/*ViewHolder*.*",
         "**/*Adapter*.*"]


task jacocoReport(type: JacocoReport, dependsOn: "${unitTestTask}") {
    reports {
        xml.enabled = true
        html.enabled = true
    }

    afterEvaluate {

        def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/${flavor}/classes",
                excludes: androidExcludes)
        def kotlinDebugTree = …
Run Code Online (Sandbox Code Playgroud)

android gradle jacoco

6
推荐指数
1
解决办法
505
查看次数