我正在尝试将一个旧项目迁移到 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)
但我怎样才能动态设置参数的名称呢?
我正在开发一个自定义视图,可以使用缩放手势进行缩放.当我没有使用比例焦点时,一切正常.但是,一旦我这样做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) 在应用程序中,我使用以下示例将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时,图像尺寸太小,但是不起作用。
我正在尝试使用在 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)