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가지만 설정할 수 있습니다.
- 그림자 색
- Shadow Dx - 그림자의 X축 오프셋을 지정합니다.-/+ 값을 지정할 수 있습니다. 여기서 -Dx는 텍스트 왼쪽에 그림자를 그리고 +Dx는 오른쪽에 그림자를 그립니다.
- shadow Dy - 그림자의 Y축 오프셋을 지정합니다. -Dy는 텍스트 위에 그림자를 지정하고 +Dy는 텍스트 아래에 그림자를 지정합니다.
- 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);
출력:
<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
'programing' 카테고리의 다른 글
| MySQL에서 텍스트 필드를 인덱싱하거나 검색 가능하게 만드는 방법은 무엇입니까? (0) | 2023.08.09 |
|---|---|
| 객체 리터럴로 선언된 녹아웃 뷰 모델과 함수 간의 차이 (0) | 2023.08.04 |
| Oracle에서 IFELL 사용 (0) | 2023.08.04 |
| NumPy의 전치() 방법은 배열의 축을 어떻게 치환합니까? (0) | 2023.08.04 |
| 스프링 스케줄링: @스케줄링 대 쿼츠 (0) | 2023.08.04 |
