2

私はテキストビューを持っています:

<TextView
      android:id="@+id/textAfter"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="example string"
      android:textColor="@android:color/transparent"
      android:textSize="40sp"
      />

この textView は、後でプログラムによって一連の方法で変更されます。

imageView_Source = (TextView)findViewById(R.id.source);
textAfter = (TextView)findViewById(R.id.textAfter);

X_FONT = Typeface.createFromAsset(getResources().getAssets(), "ROCKB.TTF");
//textAfter = new TextView(getApplicationContext());
textAfter.setTypeface(X_FONT);
localTextPaint = textAfter.getPaint();
localTextPaint.setTextScaleX(1f);     
localTextPaint.setFakeBoldText(true);
localTextPaint.setAntiAlias(true);
localTextPaint.setSubpixelText(true);
localTextPaint.setMaskFilter(new EmbossMaskFilter(new float[] { 1, 1, 1 },ambientValue, specularValue, blurRadiusValue));

public void onClick(View v) {
      //textAfter.invalidate();
      localTextPaint.setMaskFilter(null);
      textAfter.invalidate();
      localTextPaint.setMaskFilter(new EmbossMaskFilter(new float[] { 1, 1, 1 },ambientValue, specularValue, blurRadiusValue));
      textAfter.invalidate();

}};

onClick は純粋にテスト用です。ただし、次を追加すると:

 android:shadowColor="#000000"
 android:shadowDx="3.0"
 android:shadowDy="3.0"
 android:shadowRadius="1.0"

テキストは完全に見えなくなります。シャドウとマスクの両方が個別に適用された場合は機能しますが、同時に適用された場合はどちらも機能しません (テキストは真上に表示されません)。これは影にもマスクが適用されていることと関係があると推測していますが、私は Android コーディングにかなり慣れていないため、何が原因で、どのように修正するのか本当にわかりません。

前もって感謝します。

4

3 に答える 3

0

下にある同じオブジェクトの単純化された透明なコピーを使用して影のみを与え、前景にある元のオブジェクトはエンボス用に設定されています。

于 2016-11-26T20:08:37.167 に答える
0

私のプロジェクトでも同じ問題。この動作を再現できます。いくつか試してみましたが、何も機能しませんでした。代わりに *.9.png を使用したいと思います。

png を使用したくない場合、このアプローチは非常に興味深いものに見えますhttp://qwerjk.com/magic-text

于 2013-02-22T22:45:43.370 に答える