小编osr*_*srl的帖子

如何检查gradle依赖项是否具有新版本

在Android Studio中,当我使用+版本号(如com.android.support:recyclerview-v7:21.+)时,我会收到"避免在版本号中使用+"警告.当我使用特定版本号时,我不能总是使用最新版本.我的项目中有很多依赖项.如何检查依赖项是否具有较新版本?是否有Android Studio插件 - 或类似的东西 - 在有更新版本的依赖项时通知我?

编辑: Android工作室突出显示过时的Android支持库和Google Play服务.但是这不适用于其他自定义库.

在此输入图像描述

gradle android-studio

210
推荐指数
6
解决办法
6万
查看次数

使用OKHttp进行改造可以在离线时使用缓存数据

我正在尝试使用Retrofit和OKHttp来缓存HTTP响应.我按照这个要点,结束了这段代码:

File httpCacheDirectory = new File(context.getCacheDir(), "responses");

HttpResponseCache httpResponseCache = null;
try {
     httpResponseCache = new HttpResponseCache(httpCacheDirectory, 10 * 1024 * 1024);
} catch (IOException e) {
     Log.e("Retrofit", "Could not create http cache", e);
}

OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setResponseCache(httpResponseCache);

api = new RestAdapter.Builder()
          .setEndpoint(API_URL)
          .setLogLevel(RestAdapter.LogLevel.FULL)
          .setClient(new OkClient(okHttpClient))
          .build()
          .create(MyApi.class);
Run Code Online (Sandbox Code Playgroud)

这是带有Cache-Control标头的MyApi

public interface MyApi {
   @Headers("Cache-Control: public, max-age=640000, s-maxage=640000 , max-stale=2419200")
   @GET("/api/v1/person/1/")
   void requestPerson(
           Callback<Person> callback
   );
Run Code Online (Sandbox Code Playgroud)

首先,我在线请求并检查缓存文件.有正确的JSON响应和标题.但是当我尝试离线请求时,我总是得到RetrofitError UnknownHostException.我还有什么办法让Retrofit从缓存中读取响应吗?

编辑: 因为OKHttp 2.0.x HttpResponseCacheCache …

java caching offline-caching retrofit okhttp

142
推荐指数
5
解决办法
8万
查看次数

在其子类中获取自定义UIView的帧大小的位置

当我使用storyboard添加自定义UIView时,是否计算了UIView的正确帧大小?我不能得到正确的帧大小的UIView的 init(frame: CGRect)init(coder aDecoder: NSCoder)awakeFromNib().我得到了正确的大小,override func layoutSubviews()但这次视图没有添加到视图控制器的视图中.

编辑:
我想在UIView子类中执行此操作,因为我在CAGradientLayer自定义中添加了一个图层(与我的视图具有相同的大小)UIView.必须有一种比在UIViewControllers viewDidLayoutSubviews方法中设置视图更好的方法.

有两个垂直约束(超视图的尾随和前导空间),用于调整自定义视图的宽度.但是在上述方法中宽度为600,而不是屏幕宽度.

frame uiview swift ios8

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

为什么我无法读取未定义的属性“ toString”

我用这个包。我console.log在slug函数的开头添加了这些。

function slug(string, opts) {
    console.log('log 1: -------');
    console.log('log 2: ' + string);
    console.log('log 3: ' + typeof string);
    string = string.toString();
    ....
 }
Run Code Online (Sandbox Code Playgroud)

这是输出:

log 1: -------
log 2: Yüzey Aktif Maddeler
log 3: string
/Users/------/seeder/node_modules/mongodb/lib/utils.js:99
    process.nextTick(function() { throw err; });
                                  ^

TypeError: Cannot read property 'toString' of undefined
    at slug (/Users/------/seeder/node_modules/slug/slug.js:16:20)
    at Object.createSlug (/Users/------/seeder/seeder/utils.js:4:9)
    at getContent (/Users/------/seeder/seeder/content-seeder.js:345:22)
    at topic.contents.forEach.content (/Users/------/seeder/seeder/content-seeder.js:425:31)
    at Array.forEach (native)
    at /Users/------/seeder/seeder/content-seeder.js:424:21
    at /Users/------/seeder/node_modules/mongodb/lib/collection.js:523:5
    at /Users/------/seeder/node_modules/mongodb/lib/collection.js:701:5
    at handleCallback (/Users/------/seeder/node_modules/mongodb/lib/utils.js:96:56)
    at executeCommands …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

为什么?.let返回可为空,即使它的计算结果为非null

Kotlin的标准功能let定义如下:

public inline fun <T, R> T.let(block: (T) -> R): R
Run Code Online (Sandbox Code Playgroud)

这不意味着let的返回类型将是块返回的任何内容吗?

为什么这不起作用?

var a: String? = "maybe null" 
val x: Boolean = a?.let { 
    a.contains("maybe") // note that contains returns Boolean, not Boolean?
}
Run Code Online (Sandbox Code Playgroud)

这抱怨:类型不匹配:必需Boolean,找到Boolean?它不应该返回一个Boolean因为contains函数返回一个Boolean

我确定我误解了一些事情.也许有人可以帮助我和其他新手更好地理解.

kotlin

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

如何创建倾斜列表项

我有一个RecyclerView看起来像这样的水平线(显然)

-------------------------------
|     |     |     |     |     |
|  1  |  2  |  3  |  4  |  5  |
|     |     |     |     |     |
-------------------------------
Run Code Online (Sandbox Code Playgroud)

我想做这个:

------------------------------
|      /     /     /     /    |
|  1  /  2  /  3  /  4  /  5  |
|    /     /     /     /      |
-------------------------------
Run Code Online (Sandbox Code Playgroud)

创建RecyclerView这样的最佳方式是什么?

注意:我不是要创建一个倾斜的分隔线。我正在尝试创建一个倾斜的布局。通过倾斜,我的意思是蒙面而不是旋转。项目应该有 amatch_parent ImageView和 a TextView。两者都应该看起来笔直,而不是旋转。还请注意第一项和最后一项。

这是一个示例:

样本

android android-recyclerview

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

即使菜单项如何在工具栏中心对齐内容

我在中居中Toolbar。当我添加MenuItems时,内容会被推送,因此不会居中。我知道ActionMenuView是一个选项,但是SearchView这次不会扩展(另一个问题)。我尝试过contentInset属性,但是没有运气。

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:gravity="center"
    app:layout_scrollFlags="scroll|enterAlways"
    app:popupTheme="@style/AppTheme.PopupOverlay">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0000">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="4dp"
            app:srcCompat="@drawable/ic_ugurlogo_white" />

    </FrameLayout>

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

这是结果。红色的视图是FrameLayout。我要FrameLayout匹配Toolbar宽度。

工具列

我要如何实现?

android android-toolbar

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

如何使用 kotlin 协程并行运行两个作业但等待另一个作业完成

我有以下这些工作:

  1. 异步膨胀复杂的日历视图
  2. 下载事件 A
  3. 下载事件 B
  4. 将日历视图添加到它的父级
  5. 将 A 事件添加到日历
  6. 将 B 事件添加到日历

我想要

  • 1, 2, 3 必须启动异步,
  • 4 必须等待 1
  • 5 必须等待 2 和 4
  • 6 必须等待 3 和 4
  • 6 和 5 不应该相互依赖,可以在不同的时间运行。
  • 4只依赖于1,所以它可以在2或3完成之前运行。

我试过 async await 但它使它们同时完成(如预期的那样)。我认为这个例子可能是学习并行编程概念的好方法,比如信号量互斥锁或自旋锁。但这太复杂了,我无法理解。

我应该如何使用 Kotlin 协程来实现这些?

parallel-processing coroutine kotlin

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