小编TTr*_*mit的帖子

可以使用GradientColor完全用XML定义填充或描边的渐变吗?

我正在查看GradientColor的文档https://developer.android.com/reference/android/R.styleable.html#GradientColor.如何在XML中定义渐变颜色并将其应用于XML矢量drawable?

我在color.xml,styles.xml和XML vector vector中尝试过.

我收到错误"无法将@id/gradclor转换为ColorStateList":

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="120dp"
    android:height="120dp"
    android:viewportWidth="120.0"
    android:viewportHeight="120.0">

    <path
        android:name="play_triangle"
        android:pathData="M 30 30 L 30 90 L 80 60 z"
        android:strokeColor="@id/gradclor"
        android:strokeWidth="5"/>

    <color
        android:name="@+id/gradclor"
        android:startColor="#FFFFFF"
        android:endColor="#00FFFF"
        android:angle="145"/>

</vector>
Run Code Online (Sandbox Code Playgroud)

或者"使用时无法将#FFFFFFFF#00FFFFFF 145转换为ColorStateList":

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="120dp"
    android:height="120dp"
    android:viewportWidth="120.0"
    android:viewportHeight="120.0">

    <path
        android:name="play_triangle"
        android:pathData="M 30 30 L 30 90 L 80 60 z"
        android:strokeColor="@color/GradientStrokeBorder"
        android:strokeWidth="5"/>

</vector>
Run Code Online (Sandbox Code Playgroud)

使用color.xml中的以下内容:

<color name="GradientStrokeBorder">
    <item name="android:startColor">#FFFFFF</item>
    <item name="android:endColor">#00FFFF</item>
    <item name="android:angle">145</item>
</color>
Run Code Online (Sandbox Code Playgroud)

xml android android-vectordrawable

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

将类转换为JSONObject

我有几个这样的课程.我想将类转换为JSONObject格式.

import java.io.Serializable;

import com.google.gson.annotations.SerializedName;

public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @SerializedName("id")
    private Integer mId;
    @SerializedName("name")
    private String mName = "";
    @SerializedName("email")
    private String mEmail;

    public Integer getId() {
        return mId;
    }
    public void setId(Integer id) {
        mId = id;
    }

    public String getName() {
        return mName;
    }
    public void setName(String name) {
        mName = name;
    }

    public String getEmail() {
        return mEmail;
    }
    public void setEmail(String email) {
        mEmail = email;
    } …
Run Code Online (Sandbox Code Playgroud)

java json gson jsonobject

5
推荐指数
2
解决办法
4万
查看次数

如何在 Robolectric 中模拟按下后退按钮?

是否有一种简单的方法可以模拟在 Robolectric 中按下后退按钮?

以下测试失败:

@Test
public void testBackButtonClosesActivity() throws Exception {
    ShadowActivity activityShadow = Shadows.shadowOf(activity);
    activity.onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0));
    assertTrue(activityShadow.isFinishing());
}
Run Code Online (Sandbox Code Playgroud)

但是,这成功了:

@Test
public void testBackButtonClosesActivity() throws Exception {
    ShadowActivity activityShadow = Shadows.shadowOf(activity);
    activity.onBackPressed();
    assertTrue(activityShadow.isFinishing());
}
Run Code Online (Sandbox Code Playgroud)

这是我要覆盖的活动onKeyDown()

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK & myCondition) {
        doStuff();

        return true;
    } else {
        return super.onKeyDown(keyCode, event);
    }
}
Run Code Online (Sandbox Code Playgroud)

测试的时候myCondition是真实的触发器doStuff()使用另一个测试activity.onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0)); …

java instrumentation android robolectric

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

Kotlin协程吞下异常

我对异常处理如何与协程一起使用感到非常困惑。

我希望有可能拥有一系列挂起函数,这些函数可以像同步代码一样在它们之间传递异常。因此,如果说Retrofit抛出了IOException,我可以在挂起函数链的开头(例如在演示者中)处理该异常,以向用户显示错误。

我给出了一个简单的示例来试用协程,但是如果我取消注释,throw Exception则在异常无法运行后调用该代码,但异常不会使应用程序崩溃。

package com.example.myapplication

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Button
import android.widget.TextView
import kotlinx.coroutines.experimental.delay
import kotlinx.coroutines.experimental.launch

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val text = findViewById<TextView>(R.id.thing_text)
        val button = findViewById<Button>(R.id.thing_button)

        var count = 0

        button.setOnClickListener {
            launch {
                count++
//                throw Exception("Boom")
                val string = delayedStringOfInt(count)
                runOnUiThread { text.text = string }
            }
        }
    }

    suspend fun delayedStringOfInt(int: Int): String {
        delay(1000)
//        throw Exception("Boom")
        return int.toString()
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 …

android exception kotlin kotlinx.coroutines

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

GCM/Firebase 推送通知可以被 Charles 等代理软件拦截吗?

我已经设置了 Charles 代理来拦截进入在 Android 模拟器上运行的 Android 应用程序的网络流量。

在 Charles 中,帮助 > SSL 代理 > 在移动设备或远程浏览器上安装根证书

在安卓模拟器中,... 在此处输入图片说明

应用程序的常规网络流量来自 Charles 代理,而不是推送通知。

有没有办法拦截查尔斯的推送通知?

我已经看到文档说它们通过 HTTP 上的 5228-5230 端口通过。https://developers.google.com/cloud-messaging/http

我可以想象为了安全起见,这可能会变得更加困难。我已经看过这个以前的答案拦截所有 GCM 推送消息(对于任何应用程序),但它没有详细说明为什么不能完成。

android push-notification google-cloud-messaging firebase-cloud-messaging charles-proxy

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

如何在IntelliJ中使用键盘更快地导航文件行?

是否有键盘快捷键或如何在IntelliJ中设置键盘快捷方式:

  1. 一次上/下几行(例如5或10)
  2. 在类中跳转/关闭方法
  3. 进入方法层次结构,然后向上和向下滚动方法列表

或者是用键盘快速浏览代码文件的更好方法?

keyboard-shortcuts intellij-idea rubymine android-studio

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