0

コンテンツをスライドさせる再利用可能なコンポーネントを作成しようとしています。

コンポーネントのコードは次のとおりです。

package com.example.components;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;

public class SlideRightNLeft extends LinearLayout{



private LinearLayout.LayoutParams params1;
private LinearLayout.LayoutParams params2;


public SlideRightNLeft(Context context) {
    super(context);
}

public SlideRightNLeft(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public SlideRightNLeft(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}



public void slideRight(){
    int x = 0;

    while(x < 300) {

        try {
            Thread.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        params1 = new LinearLayout.LayoutParams(this.getChildAt(0).getWidth(), this.getChildAt(0).getHeight());
        params1.setMargins(300 - x, 1, 1, 1);

        params2 = new LinearLayout.LayoutParams(this.getChildAt(0).getWidth(), this.getChildAt(0).getHeight());
        params2.setMargins(x, 1, 1, 1);

        this.getChildAt(0).setLayoutParams(params1);

        this.getChildAt(1).setLayoutParams(params2);

        x++;
        this.invalidate();

    }
}


}

残念ながら滑りません。実際にスライドを見るには使用runOnUiThreadする必要があると思いますが、アクティビティが必要であり、コンポーネントにいるため、アクセスできません。

4

1 に答える 1

1

Contextコンストラクターに渡された thats を使用して、runOnUiThreadメソッドにアクセスできます。

((Activity)context).runOnUiThread(new Runnable(){

});
于 2013-01-18T04:56:28.093 に答える