小编Mic*_*rdo的帖子

屏幕方向锁定

是否有可靠的方法来锁定所有Android设备上的屏幕方向?以下代码适用于我的Nexus S和其他手机,但出于某种原因,ROTATION_90对应于Xoom上的SCREEN_ORIENTATION_REVERSE_PORTRAIT.

有没有办法可靠地将旋转映射到方向?

private void lockScreenOrientation() {
    if (!mScreenOrientationLocked) {
        final int orientation = getResources().getConfiguration().orientation;
        final int rotation = getWindowManager().getDefaultDisplay().getOrientation();

        if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }
            else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            }
        }
        else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
            }
            else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
            }
        }

        mScreenOrientationLocked = true;
    }
}

private void unlockScreenOrientation() { …
Run Code Online (Sandbox Code Playgroud)

android locking screen rotation orientation

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

从AnnotationMirror获取元素注释

是否有比这更好的方法来从AnnotationMirror获取元素注释?在我看来,这真的很hack。

for (AnnotationMirror annotationMirror : element.getAnnotationMirrors()) {
    try {
        Class annotationClass = Class.forName(annotationMirror.getAnnotationType().toString());
        Annotation annotation = element.getAnnotation(annotationClass);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

java annotations

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

如何使用Kotlin互操作强制执行泛型类型

我在Kotlin中有一个方法,它返回一个通用列表的Rx Observable:

public fun getObservable(): Observable<List<FooBar>> {
    return Observable.just(theList)
}
Run Code Online (Sandbox Code Playgroud)

因为Kotlin list trait被定义为List<out T>,所以Java会将返回类型视为Observable<List<? extends FooBar>>.

有没有办法告诉Kotlin编译器Java应该看到这个Observable<List<FooBar>>

http://kotlinlang.org/docs/reference/generics.html

已更新以正确显示问题.

java generics interop kotlin

6
推荐指数
2
解决办法
1149
查看次数

我怎样才能得到Kotlin酒店的名称?

我有以下函数来访问属性的委托.它使用Kotlin反射来获取属性的名称和Java反射以获得该字段.

fun Any.getDelegate<T>(prop: KProperty<T>): Any {
    return javaClass.getDeclaredField("${prop.name}\$delegate").let {
        it.setAccessible(true)
        it.get(this)
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法使用如下:

val delegate = a.getDelegate(A::b)
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢这样使用它:

val delegate = a.b.delegate
Run Code Online (Sandbox Code Playgroud)

上面代码的问题是获取属性名称a.ba从中获取实例a.b.根据我对Kotlin的了解,这可能是不可能的,但是我想看看我是否可以清理我的功能.

为了更好地了解我正在尝试做的事情,这是我的完整代码.我想要一个可观察的委托,我可以使用委托引用添加和删除观察者,而不创建附加变量.

fun Any.addObservable<T>(prop: KProperty<T>, observer: (T) -> Unit) {
    getObservableProperty(prop).observers.add(observer)
}

fun Any.getObservableProperty<T>(prop: KProperty<T>): ObservableProperty<T> {
    return getDelegate(prop) as ObservableProperty<T>
}

fun Any.getDelegate<T>(prop: KProperty<T>): Any {
    return javaClass.getDeclaredField("${prop.name}\$delegate").let {
        it.setAccessible(true)
        it.get(this)
    }
}

class ObservableProperty<T>(
        initialValue: T,
        initialObservers: Array<(T) -> Unit> = emptyArray()) : ReadWriteProperty<Any?, T> {

    private var value …
Run Code Online (Sandbox Code Playgroud)

reflection delegation kotlin

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

寻找一种非"强力"算法来移除一组Rects的交叉区域

我有一个n大小的Rects集合,其中大部分相互交叉.我想删除交叉点并将相交的Rects缩小为较小的非交叉rects.

我可以很容易地强制解决方案,但我正在寻找一种有效的算法.

这是一个可视化:

原版的:

原版的

处理:

处理

理想情况下,方法签名看起来像这样:

public static List<RectF> resolveIntersection(List<RectF> rects);
Run Code Online (Sandbox Code Playgroud)

输出将大于或等于输入,其中输出解析上述视觉表示.

algorithm intersection polygon rect orthogonal

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

在Kotlin的通用铸造

我有以下类和接口:

public interface ActivityComponent<T extends Activity> {
    void inject(T activity);
}

public interface MyActivityComponent extends ActivityComponent<MyActivity> {
}

public abstract class DaggerActivity extends Activity {
    abstract ActivityComponent getComponent(Context context);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityComponent component = getComponent(this);
    }
}

public class MyActivity extends DaggerActivity {
    @Override
    ActivityComponent getComponent(Context context) {
        MyActivityComponent component = buildComponent();
        return component;
    }
Run Code Online (Sandbox Code Playgroud)

这个类似的(我认为?)Kotlin代码:

public trait ActivityComponent<T : Activity> {
    public fun inject(activity: T)
}

public abstract class DaggerActivity : Activity {
    protected …
Run Code Online (Sandbox Code Playgroud)

java generics kotlin

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

Kotlin数据类复制功能不起作用

也许我误解copydata类的功能是如何工作的,或者可能存在错误,但以下是copy函数不能按预期工作的示例:

科特林:

data class A {
    public var x: String? = null
    public var y: String? = null
    public var z: B = B.ONE
}

enum class B {
    ONE
    TWO
    THREE
}
Run Code Online (Sandbox Code Playgroud)

Java的

A a1 = new A()
a1.setX("Hello")
a1.setY("World")
a1.setZ(B.TWO)

A a2 = a1.copy()
// a2.x is null
// a2.y is null
// a2.z is B.ONE
Run Code Online (Sandbox Code Playgroud)

它似乎copy只是创建一个新的实例A而不是复制值.如果我将变量放在构造函数中,则会分配值,但这与构造新实例没有什么不同.

java kotlin data-class

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

Java类是否可以了解其实例化器?

有没有办法让Java类了解其实例化器?例如:

public class Foo() {

    public Foo() {
        // can I get Bar.myInteger from here somehow 
        // without passing it in to the constructor?
    }
}

public class Bar {
    private int myInteger;

    public Bar() {
        myInteger = 0;

        Foo foo = new Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

java constructor

3
推荐指数
2
解决办法
297
查看次数

如何为抽象类的子类声明默认构造函数?

以下在Java中对我不起作用.Eclipse抱怨说没有这样的构造函数.我已经将构造函数添加到子类中以解决它,但还有另一种方法可以做我正在尝试做的事情吗?

public abstract class Foo {
    String mText;

    public Foo(String text) {
        mText = text;
    }  
}

public class Bar extends Foo {

}

Foo foo = new Foo("foo");
Run Code Online (Sandbox Code Playgroud)

java constructor class abstract

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

在SQL中,如何将一个匹配列优先于另一个?

我尝试了一些东西,但我画了一个空白.这是我的查询:

SELECT * 
    FROM Companies 
WHERE 
    Symbol LIKE 'ZY%' OR 
    Name LIKE '%ZY%' 
ORDER BY Symbol ASC
LIMIT 2;
Run Code Online (Sandbox Code Playgroud)

基本上我想要"ZY"匹配(ZNGA,Zynga Inc)才能匹配(HALO,Halozyme Therapeuti ......).

显然,订单的原因是这部分查询:

ORDER BY Symbol
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?

sql where match operator-precedence

0
推荐指数
1
解决办法
122
查看次数