39

カスタム線形レイアウトの背景として使用するために、オンザフライでドローアブルを作成しようとしています。ハッシュマークなど(大したことではありません)が必要ですが、ハッシュマークが何であるかを示す数字(定規など)も必要です。テキスト要素を作成してlinearlayout内に配置し、drawable内にハッシュマークを配置するだけでよいことはわかっていますが、drawable内にもそれらを配置したいので、測定計算を2回行う必要はありません。

4

5 に答える 5

100

TextDrawable以下は、通常のドローアブルのように機能するが、唯一のコンストラクター変数としてテキストを指定できるの簡単な例です。

public class TextDrawable extends Drawable {

    private final String text;
    private final Paint paint;

    public TextDrawable(String text) {

        this.text = text;

        this.paint = new Paint();
        paint.setColor(Color.WHITE);
        paint.setTextSize(22f);
        paint.setAntiAlias(true);
        paint.setFakeBoldText(true);
        paint.setShadowLayer(6f, 0, 0, Color.BLACK);
        paint.setStyle(Paint.Style.FILL);
        paint.setTextAlign(Paint.Align.LEFT);
    }

    @Override
    public void draw(Canvas canvas) {
        canvas.drawText(text, 0, 0, paint);
    }

    @Override
    public void setAlpha(int alpha) {
        paint.setAlpha(alpha);
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
        paint.setColorFilter(cf);
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSLUCENT;
    }
}
于 2012-01-12T06:52:43.693 に答える
15

「Professional Android 2 Application Development」(Reto Meier 著) という本を読みました。とりわけ、テキストやマーカーなどを「描画」する単純なコンパス アプリケーションを作成するサンプル プロジェクトが含まれています。

簡単に説明すると、クラスを拡張してメソッドandroid.view.Viewをオーバーライドするクラスを作成するということです。onDraw(Canvas)

本書のすべてのソース コードは、http: //www.wrox.com/WileyCDA/WroxTitle/Professional-Android-2-Application-Development.productCd-0470565527,descCd-DOWNLOAD.htmlからダウンロードできます。コードをダウンロードして、"Chapter 4 Compass" という名前のプロジェクトの中を見ると、探しているものが見つかると思います :)

于 2010-10-19T21:21:49.273 に答える