Tag: 转换

如何开始创建类似于Google Play音乐的交互式转换

我正在创建一个视图,在用户与之交互时滑出。 我想制作一个小型的酒吧,当用户向上拖动它时,它会在他们的手指下动画,并随着它们一起移动,直到最终开启全景。 仔细观察Google Play音乐,我猜测他们正在使用片段,并且有两个滚动视图,一个滚动整个屏幕,但触摸区域只定义为底部的栏,并以占位符视图滚动看起来像真正的玩家,然后在最后一秒切换片段。 这个,或者根本不是片段,只是在编程的时候,视图是100%滚动的,并且改变了按钮的位置 有任何想法吗? 我找不到任何代码示例。 Kotlin或Java

Kotlin:“val someVar = if(xx)1 else 1.0”,为什么someVar是“Any”?

首先,我试过: interface Super class A : Super class B : Super val a = if (System.currentTimeMillis() >= 100) A() else B() 我按Ctrl Q来检查一个类型。 Super预期的。 但是当我尝试: val someVar = if (System.currentTimeMillis() > 0) 1 else 1.0 它说一些someVar是一个Any 。 它不应该是一个Number吗?

在lambda kotlin变通方法中的智能转换变量

我今天已经过了一个lambda,它有一个未知类型的变量,并且在when..is条件中,变量不能智能地转换成is条件中的类型…这使得它是不可能的,因为变量是一个公共的API,有没有解决这个?

如何正确处理Kotlin中大于127的字节值?

想象一下,我有一个带有Byte类型的变量b的Kotlin程序,外部系统写入的值大于127 。 “外部”意味着我不能改变它返回的值的类型。 val a:Int = 128 val b:Byte = a.toByte() a.toByte()和b.toInt()返回-128 。 想象一下,我想从变量b得到正确的值( 128 )。 我该怎么做? 换句话说: magicallyExtractRightValue什么实现会使下面的测试运行? @Test fun testByteConversion() { val a:Int = 128 val b:Byte = a.toByte() System.out.println(a.toByte()) System.out.println(b.toInt()) val c:Int = magicallyExtractRightValue(b) Assertions.assertThat(c).isEqualTo(128) } private fun magicallyExtractRightValue(b: Byte): Int { throw UnsupportedOperationException("not implemented") } 更新1:由Thilo建议的这个解决方案似乎工作。 private fun magicallyExtractRightValue(o: Byte): Int […]

与Kotlin泛型混淆

我是Kotlin的新手,我正在尝试编写一些相当简单的代码,但我无法弄清楚如何使用泛型来实现它。 我有一个Handler特点,代表事物的处理程序。 我不能更改处理程序的代码,因为它来自库 。 trait Handler<T> { fun handle(result: T) } 下面的所有代码都在我的控制之下 – User是具有诸如AdminUser和GuestUser等子类的公开类。 一个名为AdminUserAction的特性可以创建一个AdminUser列表,然后将列表传递给List<AdminUser>一个处理器。 trait AdminUserAction { fun then(handler: Handler<List<AdminUser>>) } 现在我想为AdminUserAction传递一个AdminUserAction处理程序,而不是AdminUser 。 假设处理程序只记录用户的名字,并且不对管理员指定的属性做任何事情。 fun doIt(action: AdminUserAction, printAllNames: Handler<List<User>>) { action.then(printAllNames) } 但是,这段代码给了我一个TypeMismatch 。 由于处理程序的类型是List<T>并且是不可变的,所以前面的代码应该是完全安全的,但编译器无法解决这个问题。 如果我可以访问处理程序的代码,我可以做到以下几点,它会工作 – trait Handler<in T> { fun handle(result: T) } 但是,正如我之前所说,我不能修改Handler,因为它来自一个库。 此外,似乎很难做到这一点,因为处理程序的类型是完全一般的,应该也可以用于其他类型的处理程序。 我试过继承Handler并使用它 – trait ListHandler<in T>: Handler<List<T>> { […]

在kotlin中尝试makeSceneTransitionAnimation

而学习kotlin我尝试创建makeSceneTransitionAnimation图像转换,但它不像在java中,这是我的代码从适配器类 itemView.imageContent.setOnClickListener { val i = Intent(context, ImagePreviewActivity::class.java) i.putExtra("IMAGE", item.content) val trans = context.getString(R.string.transition) val options = ActivityOptionsCompat.makeSceneTransitionAnimation( Activity(), itemView.imageContent, trans ) context.startActivity(i, options.toBundle()) } 这是我的logcat java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.Window.hasFeature(int)' on a null object reference at android.app.ActivityOptions.makeSceneTransitionAnimation(ActivityOptions.java:709) at android.app.ActivityOptions.makeSceneTransitionAnimation(ActivityOptions.java:648) at android.app.ActivityOptions.makeSceneTransitionAnimation(ActivityOptions.java:622) at android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation(ActivityOptionsCompat.java:172) at com.docotel.binmaspublic.module.report.ReportAdapter$ViewHolder$bind$2.onClick(ReportAdapter.kt:130) 对不起,如果你发现这是一个重复的问题