programing

Android - 텍스트에 그림자?

mailnote 2023. 8. 4. 23:15
반응형

Android - 텍스트에 그림자?

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

비트맵에 적용된 다음 코드를 가지고 있고 그림자를 드리우고 싶었습니다.

paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...

다음과 같은 스타일을 추가할 수 있어야 합니다(링드로이드의 소스 코드에서 따옴).

  <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 에서 볼 수 있습니다.

편집2: 이 스타일을 프로그래밍 방식으로 설정하려면 다음과 같은 작업을 수행합니다(이 예제에서 위의 링드로이드 리소스와 일치하도록 수정됨).

TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),  
       R.style.AudioFileInfoOverlayText);

에 대한 서명setTextAppearance이라

public void setTextApearance(컨텍스트 컨텍스트, 내부)

시작: API 레벨 1
지정된 텍스트 모양 리소스에서 텍스트 색상, 크기, 스타일, 힌트 색상 및 강조 색상을 설정합니다.

코드와 XML 모두 가능합니다. 기본적으로 4가지만 설정할 수 있습니다.

  1. 그림자 색
  2. Shadow Dx - 그림자의 X축 오프셋을 지정합니다.-/+ 값을 지정할 수 있습니다. 여기서 -Dx는 텍스트 왼쪽에 그림자를 그리고 +Dx는 오른쪽에 그림자를 그립니다.
  3. shadow Dy - 그림자의 Y축 오프셋을 지정합니다. -Dy는 텍스트 위에 그림자를 지정하고 +Dy는 텍스트 아래에 그림자를 지정합니다.
  4. Shadow radius - 가장자리에서 그림자를 흐리게 할 정도를 지정합니다.그림자가 두드러져야 할 경우 작은 값을 제공합니다.그렇지 않으면.

예.

    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 레이아웃 코드에서 텍스트 뷰1은 레이아웃에 Shadow effect와 함께 제공됩니다. 아래는 구성 항목입니다.

Android:shadowDx – 그림자의 X축 오프셋을 지정합니다.-/+ 값을 지정할 수 있습니다. 여기서 -Dx는 텍스트 왼쪽에 그림자를 그리고 +Dx는 오른쪽에 그림자를 그립니다.

Android:shadowDy – 그림자의 Y축 오프셋을 지정합니다. -Dy는 텍스트 위에 그림자를 지정하고 +Dy는 텍스트 아래에 그림자를 지정합니다.

Android:shadowRadius – 가장자리에서 그림자를 흐리게 할 정도를 지정합니다.그림자가 두드러져야 할 경우 작은 값을 제공합니다. Android:shadowColor – 그림자 색상을 지정합니다.


Android TextView에 대한 섀도 효과 실용적인 기능

아래 코드 조각을 사용하여 두 번째 텍스트 보기에 대한 섀도 효과를 실용적으로 가져옵니다.

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

출력:

enter image description here

 <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"/>

Android가 Launcher에서 수행하는 것과 같은 그림자를 생성하려면 이러한 값을 관리합니다.배경 없이 위젯으로 표시되는 텍스트 보기를 만들 경우 유용합니다.

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

두 개의 텍스트를 그립니다. 하나는 회색이고 그 위에 두 번째 텍스트를 그립니다(y 좌표는 그림자 텍스트보다 1px 더 많음).

언급URL : https://stackoverflow.com/questions/2486936/android-shadow-on-text

반응형