小编anr*_*nro的帖子

Retrofit — 多个具有相同名称的查询参数,其中名称是动态设置的

我正在尝试将一个旧项目迁移到 Retrofit 库,并且该项目有相当棘手的 API。所以我有一个这样的查询模板:

@GET(value = "products/search")
Single<ProductSearchResponse> productSearch();
Run Code Online (Sandbox Code Playgroud)

我必须在以下模板中添加一些参数:

filter[attributeId]=attributeValueId
Run Code Online (Sandbox Code Playgroud)

例如:

products/search?filter[1]=10&filter[1]=11&filter[2]=20&filter[2]=21
Run Code Online (Sandbox Code Playgroud)

这就是 API 的工作方式,我无法更改它。我知道我们可以传递一个列表作为参数,如下所示:

@Query("filter") List<Integer> attributeValueIds
Run Code Online (Sandbox Code Playgroud)

但我怎样才能动态设置参数的名称呢?

java android retrofit2

6
推荐指数
2
解决办法
7459
查看次数

使用scaleFocus缩放画布会导致跳转

我正在开发一个自定义视图,可以使用缩放手势进行缩放.当我没有使用比例焦点时,一切正常.但是,一旦我这样做canvas.scale(mScaleFactor, mScaleFactor, scaleFocus[0], scaleFocus[1]);,它会导致跳跃,同时缩小到一些低比例因子.这是视图的简化版本,它说明了问题:

public class TestView extends FrameLayout {

private ScaleGestureDetector mScaleGestureDetector;
private float mScaleFactor = 1.f;
private float mMinScaleFactor = 0.4f;
private static final float MAX_SCALE_FACTOR = 2.0f;
private Matrix canvasMatrix = new Matrix();
float[] scaleFocus = new float[2];
private Rect clipBounds = new Rect();

private static final String TAG = "TestView";

public TestView(@NonNull Context context) {
    super(context);
    sharedConstructor();
}

public TestView(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    sharedConstructor();
}

public TestView(@NonNull Context context, …
Run Code Online (Sandbox Code Playgroud)

java android scale android-animation

5
推荐指数
0
解决办法
78
查看次数

用Glide加载SVG时图像模糊

在应用程序中,我使用以下示例将SVG图像加载到ImageView中:

Glide.with(context)
                .using(Glide.buildStreamModelLoader(Uri.class, context), InputStream.class)
                .from(Uri.class)
                .as(SVG.class)
                .transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
                .sourceEncoder(new StreamEncoder())
                .cacheDecoder(new FileToStreamDecoder<>(new SvgDecoder()))
                .decoder(new SvgDecoder())
                .listener(new SvgSoftwareLayerSetter())
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .load(uri)
                .into(imageView);
Run Code Online (Sandbox Code Playgroud)

xml中的ImageView看起来像这样:

       <ImageView
        android:layout_width="46dp"
        android:layout_height="46dp"
        android:layout_marginTop="25dp"
        android:layout_gravity="center"
       />
Run Code Online (Sandbox Code Playgroud)

因此,该问题可以在下图看到。右边的图标是从应用程序的资源设置的,而左边的图标是使用Glide从服务器加载的。由于某些原因,图像缩放不正确,并且看起来模糊。

要比较的图像

我已经尝试过以下答案的解决方案: 用Glide加载SVG时,图像尺寸太小,但是不起作用。

java svg android android-glide

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

尝试在styles.xml 中使用自定义字体时,Android 资源链接失败

我正在尝试使用在 Android O 中添加的具有新“android:fontFamily”属性的自定义字体。虽然这在 xml 中有效:

android:fontFamily="@font/sf_pro_text_semibold"
Run Code Online (Sandbox Code Playgroud)

在styles.xml 中使用相同的构造,如下所示:

<item name="android:fontFamily">@font/sf_pro_text_semibold"</item>
Run Code Online (Sandbox Code Playgroud)

导致以下构建错误:

Execution failed for task ':app:processDebugResources'.
Run Code Online (Sandbox Code Playgroud)

Android 资源链接失败 C:\Users\anro.gradle\caches\transforms-2\files-2.1\4125ed89f50d00591f7f19265a14b826\res\values\values.xml:AAPT:错误:资源字体/sf_pro_text_semibold.example.字体/sf_pro_text_semibold") 未找到。

很多教程都说它应该可以工作,但事实并非如此。我想问题出在 build.gradle 文件中,但我什至不知道如何尝试使其工作(降级到较旧的支持库版本不是一个好的解决方案)。这是我的 build.gradle 文件:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'
    defaultConfig {
        applicationId "com.example.fonttesting"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2' …
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin

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