[android] 안드로이드-텍스트 그림자?

안드로이드에서 텍스트에 그림자를 추가하는 방법이 궁금합니다.

비트 맵에 적용되는 다음 코드가 있으며 음영 처리를 원했습니다 …

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

공공 무효 setTextAppearance (컨텍스트 컨텍스트, int resid)

API 레벨 1
지정된 TextAppearance 자원에서 텍스트 색상, 크기, 스타일, 힌트 색상 및 강조 표시 색상을 설정합니다.


답변

코드와 XML 모두에서 할 수 있습니다. 4 가지 기본 사항 만 설정해야합니다.

  1. 그림자 색
  2. Shadow Dx-그림자의 X 축 오프셋을 지정합니다. -/ + 값을 지정할 수 있습니다. 여기서 -Dx는 텍스트 왼쪽에 그림자를, 오른쪽에 + Dx를 그립니다
  3. shadow Dy-그림자의 Y 축 오프셋을 지정합니다. -Dy는 텍스트 위에 그림자를 지정하고 + Dy는 텍스트 아래에 그림자를 지정합니다.
  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의 그림자 효과

아래 코드 스 니펫을 사용하여 두 번째 TextView의 그림자 효과를 실용적으로 얻으십시오.

TextView textv = (TextView) findViewById(R.id.textview2);
textv.setShadowLayer(30, 0, 0, Color.RED);        

출력 :

여기에 이미지 설명을 입력하십시오


답변

실행기에서 Android와 같은 그림자를 얻으려면 이러한 값을 관리합니다. 배경없이 위젯으로 표시되는 TextView를 만들려는 경우 유용합니다.

android:shadowColor="#94000000"
android:shadowDy="2"
android:shadowRadius="4"


답변

두 개의 텍스트를 그립니다 : 하나의 회색 (그림자가 될 것입니다) 그리고 그 위에 두 번째 텍스트를 그립니다 (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"/>


답변