アンドロイドでテキストに影を付ける方法を知りたいですか?
私はビットマップに適用される次のコードを持っていて、シャドウされたいと思いました...
paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...
アンドロイドでテキストに影を付ける方法を知りたいですか?
私はビットマップに適用される次のコードを持っていて、シャドウされたいと思いました...
paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...
回答:
次のようにスタイルを追加できるはずです(Ringdroidのソースコードから取得)。
<style name="AudioFileInfoOverlayText">
<item name="android:paddingLeft">4px</item>
<item name="android:paddingBottom">4px</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:textSize">12sp</item>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">1</item>
</style>
そしてあなたのレイアウトでは、次のようなスタイルを使用します:
<TextView android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/AudioFileInfoOverlayText"
android:gravity="center" />
編集:ソースコードはここで閲覧できます:https : //github.com/google/ringdroid
Edit2:このスタイルをプログラムで設定するには、次のようにします(この例から変更して、上記のringdroidのリソースに一致させます)。
TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),
R.style.AudioFileInfoOverlayText);
の署名setTextAppearance
は
public void setTextAppearance(コンテキストコンテキスト、int resid)
導入:APIレベル1 指定されたTextAppearanceリソースから、テキストの色、サイズ、スタイル、ヒントの色、ハイライトの色を設定します。
コードとXMLの両方で行うことができます。設定する必要があるのは4つの基本的なものだけです。
例えば
android:shadowColor="@color/text_shadow_color"
android:shadowDx="-2"
android:shadowDy="2"
android:shadowRadius="0.01"
これにより、テキストの左下側に目立つ影が描画されます。コードでは、このようなものを追加できます。
TextView item = new TextView(getApplicationContext());
item.setText(R.string.text);
item.setTextColor(getResources().getColor(R.color.general_text_color));
item.setShadowLayer(0.01f, -2, 2, getResources().getColor(R.color.text_shadow_color));
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="20dp" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:shadowColor="#000" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="50" android:text="Text Shadow Example1" android:textColor="#FBFBFB" android:textSize="28dp" android:textStyle="bold" /> <TextView android:id="@+id/textview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Text Shadow Example2" android:textColor="#FBFBFB" android:textSize="28dp" android:textStyle="bold" /> </LinearLayout>
上記のXMLレイアウトコードでは、textview1にレイアウトのシャドウ効果が指定されています。以下は構成アイテムです
android:shadowDx –影のX軸オフセットを指定します。-/ +値を指定できます。ここで、-Dxはテキストの左側に影を描き、+ Dxは右側に影を描きます
android:shadowDy –影のY軸オフセットを指定します。-Dyはテキストの上に影を指定し、+ Dyはテキストの下に影を指定します。
android:shadowRadius –エッジでぼかすシャドウの量を指定します。影を目立たせる必要がある場合は、小さな値を指定します。android:shadowColor –影の色を指定します
Android TextViewのシャドウ効果を実用的に
以下のコードスニペットを使用して、2番目のTextViewのシャドウ効果を実用的に取得します。
TextView textv = (TextView) findViewById(R.id.textview2); textv.setShadowLayer(30, 0, 0, Color.RED);
出力:
2つのテキストを描画します。1つの灰色(影になる)とその上に2番目のテキストを描画します(y座標は影のテキストよりも1px多い)。
<style name="WhiteTextWithShadow" parent="@android:style/TextAppearance">
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">1</item>
<item name="android:shadowColor">@android:color/black</item>
<item name="android:textColor">@android:color/white</item>
</style>
次にとして使用
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
tools:text="Today, May 21"
style="@style/WhiteTextWithShadow"/>