0

助けてください!

静的コンテキストで BitmapDrawable を作成する際に問題があります。私は学生コンテスト用の Android アプリを作成していますが、MainActivity クラスが「汚い」ように見え始めたので (多くのコードが含まれているため)、MainActivity を拡張する MainActivityLayout クラスを作成することにしました。基本的に、いくつかのメソッド (レイアウトを設定するためのもの) を MainActivity から MainActivityLayout クラスに移動しました。問題は、ビットマップのサイズを適切に変更するためにリソースへの参照が必要なため、BitmapDrawable コンストラクターを使用する resize() メソッドにあります。

MainActivity クラス:

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getLayoutOne();
    MainActivityLayouts.setLayoutOne();

    getLayoutTwo();
    MainActivityLayouts.setLayoutTwo();

}


private void getLayoutOne(){

//here I get the layouts id using findViewById() method

}

private void getLayoutTwo(){

//here I get the layout 2 id using findViewById() method

}

    protected static Drawable resize(Drawable image,int xSize,int ySize) {

    Bitmap b = ((BitmapDrawable)image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, xSize, ySize, false);
    return new BitmapDrawable(getResources(),bitmapResized);

    }

}

MainActivityLayout クラス:

public class MainActivityLayouts extends MainActivity{


public MainActivityLayouts(){
// ... 
}

protected final static void setLayoutOne(){

Drawable drawableOne = ImageViewOne.getDrawable();
//here is the problem...cannot make a static refference... 
//getResources() from resize method from MainActivity to be more specific
drawableOne = resize(drawableOne,100,100);
ImageViewOne.setImageDrawable(drawableOne);

}

protected final static void setLayoutTwo(){

Drawable drawableTwo = ImageViewTwo.getDrawable();
//here is the problem...cannot make a static refference... 
//getResources() from resize method from MainActivity to be more specific
drawableTwo = resize(drawableTwo,200,200);
ImageViewTwo.setImageDrawable(drawableTwo);

}

私の問題の解決策はありますか?別のモードでサイズ変更しますか、または BitmapDrawable の作成を回避しても同じ効果を得ることができますか? 批評家は大歓迎です:)。

4

0 に答える 0