如何在Java项目中使用Kotlin库?

10

我找到了一个符合我的需求的库,但它是用Kotlin编写的。我可以在Java项目中使用吗?

框架:https://github.com/mpetlyuk/initial_tips

Kotlin的使用方法:

// Create view for your tip
val inflater = LayoutInflater.from(Context)
val tipView = DataBindingUtil.inflate<ViewDataBinding>(inflater, R.layout.item_tooltip, null, false).getRoot()

// Create tip
val tip = Tooltip.Builder()
    .attachTooltipView(tipView)
    .withEnterAnimation(AnimationComposer(FadeInAnimator()).duration(ANIM_DURATION))
    .withExitAnimation(AnimationComposer(FadeOutAnimator()).duration(ANIM_DURATION))
    .withGravity(TipVerticalGravity.BOTTOM, TipHorizontalGravity.LEFT)
    .withAnchorView(/* anchor view */)
    .build()

// Create a queue of tips
val tooltipsQueue = LinkedBlockingQueue<Tip>(listOf(tip))

// Create a queue of tips
TipsManager.showTips(binding.root as ViewGroup, ContextCompat.getColor(this, 0 /* your resource color for dimming */)) { tooltipsQueue }
2个回答

4

首先需要在你的应用中添加Kotlin支持。只需创建一个临时的Kotlin文件,Android Studio将指导你如何完成此操作。

TextView tipView = (TextView) LayoutInflater.from(this).inflate(R.layout.item_tooltip, null, false).getRootView();
Tooltip tip = new Tooltip.Builder()
        .attachTooltipView(tipView)
        .withEnterAnimation(new AnimationComposer<BaseViewAnimator>(new FadeInAnimator()).duration(500))
        .withExitAnimation(new AnimationComposer<BaseViewAnimator>(new FadeOutAnimator()).duration(500))
        .withGravity(TipVerticalGravity.BOTTOM, TipHorizontalGravity.LEFT)
        .withAnchorView(loginButton)
        .build();

List<Tip> tips = new ArrayList<>();
tips.add(tip);
final LinkedBlockingQueue<Tip> tooltipsQueue = new LinkedBlockingQueue<>(tips);
TipsManager.showTips(rootView, R.color.colorAccent, new Function0<Queue<Tip>>() {
    @Override
    public Queue<Tip> invoke() {
        return tooltipsQueue;
    }
});

1
您不需要添加Kotlin支持或创建Kotlin文件。 - Alexey Romanov
在lib中,showTips使用了kotlin.jvm.functions.Function0内部的Function0。因此,为了使其正常工作,项目必须支持Kotlin。如果我有错误,请纠正。 - Tuan Luong
1
不需要,只需要将kotlin-stdlib作为依赖项即可从Java中使用它。但是它会被自动捆绑,因为它是Vergiliy实际想要使用的库的依赖项。 - Alexey Romanov
谢谢。一切都完美地运作了。我仍然需要添加Kotlin支持,因为没有它,就没有Function0函数。 - Vergiliy

1

1
我想补充一点,那就是一个库本身也必须考虑到Java的使用方式,至少有几种方法可以使其无法从Java中访问。 - Marko Topolnik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接