小编1da*_*on1的帖子

如何获得成功响应的状态代码Volley Android

我想问一下使用Volley时如何获取状态代码.

我有以下代码:

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // Here I want to get status code
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }
    )
Run Code Online (Sandbox Code Playgroud)

可能吗 ?如果没有,为什么?

android response status request android-volley

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

在Android中使用来自res/font的自定义字体与WebView

我想改变加载到WebView中的html字符串的字体,就像这个问题中提到的那样:

如何在Android中更改Webview的字体?

不同之处在于我没有使用旧方法将字体文件存储在assets文件夹中,但我将它们存储在res/font中,如"字体在XML中"android字体支持文档中所述:

https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

现在,我显然不能使用:

file:///android_asset/fonts/my_font.otf

我试过了:

file:///android_res/font/my_font.otf

以及在res/font文件夹中描述我的字体路径的许多其他方法,但它们都不起作用.

如果我的字体存储在res/font文件夹中,如何为加载html字符串的WebView使用自定义字体系列?

//编辑:

我目前的实施不起作用是:

@BindingAdapter("loadData")
public static void loadData(WebView webView, String htmlData) {
    webView.loadDataWithBaseURL(null, htmlData, "text/html", "utf-8", null);
}

@BindingAdapter({"loadData", "fontFamily"})
public static void loadData(WebView webView, String htmlData, @FontRes int fontFamilyId) {
    TypedValue value = new TypedValue();
    ApplicationActivity.getSharedApplication().getResources().getValue(fontFamilyId, value, true);
    String fontPath = value.string.toString();
    File fontFile = new File(fontPath);

    String prefix = "<html>\n"
            +"\t<head>\n"
            +"\t\t<style type=\"text/css\">\n"
            +"\t\t\t@font-face {\n"
            +"\t\t\t\tfont-family: 'CustomFont';\n"
            +"\t\t\t\tsrc: url(\"file:///android_res/font/"+fontFile.getName()+"\")\n"
            +"\t\t\t}\n"
            +"\t\t\tbody {\n"
            +"\t\t\t\tfont-family: 'CustomFont';\n"
            +"\t\t\t}\n"
            +"\t\t</style>\n"
            +"\t</head>\n"
            +"\t<body>\n";
    String …
Run Code Online (Sandbox Code Playgroud)

fonts android webview font-face custom-font

11
推荐指数
2
解决办法
3855
查看次数

LiveData与ObservableField进行数据绑定

关于Stackoverflow,存在与LiveData和ObservableField之间的差异有关的多个问题。另外,我在互联网上找到了有关该主题的多篇文章。所有这些都说明LiveData与ObservableField不同,它具有生命周期意识。他们中的大多数人还提到,如果像Activity或Fragment这样的组件观察到该属性,则使用LiveData代替ObservableField是有利的,因此我们不需要退订。

但是,即使阅读了所有这些内容,我仍然不清楚的是,使用LiveData而不是ObservableField进行数据绑定是否有某些优势。例如:

ViewModel:

class UserViewModel(user: User) : ViewModel {
    val userName = ObservableField<String>(user.name) // Option 1
    val userName = MutableLiveData<String>(user.name) // Option 2
}
Run Code Online (Sandbox Code Playgroud)

布局:

<layout>
    <data>
        <variable name="viewModel" type="com.example.UserViewModel" />
    </data>
    ...
</layout>
Run Code Online (Sandbox Code Playgroud)

对于选项2,我binding.setLifecycleOwner(activity)当然也必须使用。让我们假设除了布局之外没有其他东西userName

我的问题是:

使用选项2相对于选项1是否有任何优势,或者在这种情况下没有关系,因为视图(布局)将一直观察到它存在为止?

更让我感到困惑的是这篇文章: https : //android.jlelse.eu/android-architecture-components-livedata-with-data-binding-7bf85871bbd8表示: “在以前的方法中(如果没有LiveData)在UI上显示数据之前,我们应该事先检查它是否仍然存在。使用LiveData,我们不必担心,因为只有在Activity至少已启动(因此处于启动或恢复状态)时才会发布数据。”

我不明白这个引用的部分。在使用“先前方法”的情况下检查UI是否仍然存在是什么意思ObservableField?对于我在选项1中的示例,您将如何应用此检查?

binding android observable android-livedata

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

Android连接蓝牙键盘并在服务中监听按键

如果用户按下连接到Android设备的蓝牙键盘的任意键,是否可以通过服务收听?只是为了捕捉用户按下连接蓝牙键盘键的事件.

keyboard android bluetooth device connect

6
推荐指数
0
解决办法
392
查看次数

如何在非凸多边形中排序顶点(如何找到许多解中的一个)

我有同样的问题:如何在一个简单的非凸多边形中排序顶点, 但没有我可以使用的解决方案.

我有点的坐标,需要找到一些多边形.对于一个点列表有更多解决方案并不重要.我需要一些算法来找到其中一个.无论哪一个.我真的不知道如何解决这个问题.

(我在数组中存储坐标,我想在Javascript中使用一些算法)

非常感谢.

algorithm polygon points non-convex

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

在php中使用multipart/form-data请求发送文件

我将图像资源存储在变量中,我需要使用其 http API 和 PHP 将其发送到服务器。我必须发送内容类型为 multipart/form-data 的请求。所以,我需要发出类似的请求,就像发送带有文件输入和 enctype=multipart/form-data 属性的表单一样。我试过这个:

<?php
$url = 'here_is_url_for_web_API';
$input = fopen('delfin.jpg','r');       
$header = array('Content-Type: multipart/form-data');
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_USERPWD, "user:password");
curl_setopt($resource, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);
curl_setopt($resource, CURLOPT_HTTPHEADER, $header);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($resource, CURLOPT_BINARYTRANSFER, true );
curl_setopt($resource, CURLOPT_INFILESIZE, 61631);
curl_setopt($resource, CURLOPT_INFILE, $input);
$result = curl_exec($resource);
curl_close($resource);
var_dump($result);
?>
Run Code Online (Sandbox Code Playgroud)

我不知道响应应该是什么样子,但这会返回:http 状态 405,错误报告是:请求的资源 () 不允许指定的 HTTP 方法。

binary curl multipartform-data file request

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