programing

Android에서 보기에 대한 불투명도(Alpha)를 설정하는 방법

newsource 2023. 10. 27. 21:58

Android에서 보기에 대한 불투명도(Alpha)를 설정하는 방법

다음과 같은 버튼이 있습니다.

<Button 
     android:text="Submit" 
     android:id="@+id/Button01" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content">
</Button>

onCreate()이벤트, Button01에 이렇게 전화합니다.

setContentView(R.layout.main);

View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);

지원서에 배경이 있는데, 이 제출 버튼에 불투명도를 설정하고 싶습니다.이 보기에 불투명도를 설정하려면 어떻게 해야 합니까?자바 쪽에 설정할 수 있는 건가요, 아니면 main.xml 파일에 설정할 수 있는 건가요?

자바 쪽에서 나는 시도했습니다.Button01.mutate().SetAlpha(100), 하지만 그것이 저에게 오류를 주었습니다.

다른 사람들이 훨씬 복잡한 대답을 하는 것에 저는 놀랍니다.

XML

아주 간단하게 xml에 있는 버튼(또는 다른 보기)의 색상 정의에서 알파를 정의할 수 있습니다.

android:color="#66FF0000"    // Partially transparent red

위의 예에서 색상은 부분적으로 투명한 빨간색입니다.

뷰의 색상을 정의할 때 형식은 다음 중 하나일 수 있습니다.#RRGGBB아니면#AARRGGBB,어디에AA는 16진수 알파 값입니다.FF완전 불투명할 것이고.00완전 투명할 겁니다

동적으로

코드의 불투명도를 동적으로 변경해야 하는 경우

myButton.getBackground().setAlpha(128);  // 50% transparent

INT 범위는 다음과 같습니다.0(완전히 투명한) 에255(완전 불투명).

이미 답을 찾으셨을 수도 있겠지만, 그렇지 않다면(다른 개발자의 경우) 다음과 같이 할 수 있습니다.

btnMybutton.getBackground().setAlpha(45);

여기 불투명도를 45로 설정했습니다.기본적으로 0(완전 투명)에서 255(완전 불투명) 사이의 임의의 값으로 설정할 수 있습니다.

위에서 설명하면 훨씬 쉬워집니다.기본 알파 특성은 단추에 대해 있습니다.

android:alpha="0.5"

범위는 완전 투명의 경우 0이고 완전 불투명의 경우 1입니다.

다음과 같은 colors.xml 파일에 사용자 지정 ARGB 색상을 만드는 것이 좋습니다.

<resources>
<color name="translucent_black">#80000000</color>
</resources>

그런 다음 단추 배경을 해당 색상으로 설정합니다.

android:background="@android:color/translucent_black"

단추 모양을 가지고 놀려면 단추 모양 속성을 설정하는 Shape drawable 리소스를 만드는 것도 가능합니다.

파일: res/drawable/ rounded_corner_box.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#80000000"
        android:endColor="#80FFFFFF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

그런 다음 단추 배경으로 사용합니다.

    android:background="@drawable/rounded_corner_box"

TextView와 유사한 문제가 발생하는 동안 방금 당신의 질문을 찾았습니다.TextView를 확장하고 재정의하여 해결할 수 있었습니다.onSetAlpha해 볼 수 것입니다 어쩌면 당신은 당신의 버튼으로 비슷한 것을 시도해 볼 수도 있습니다.

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class AlphaTextView extends TextView {

  public AlphaTextView(Context context) {
    super(context);
  }

  public AlphaTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public AlphaTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  @Override
  public boolean onSetAlpha(int alpha) {
    setTextColor(getTextColors().withAlpha(alpha));
    setHintTextColor(getHintTextColors().withAlpha(alpha));
    setLinkTextColor(getLinkTextColors().withAlpha(alpha));
    return true;
  }
}

안드로이드 문서 보기 알파는 0과 1 사이의 값입니다.이를 설정하려면 다음과 같은 방법을 사용합니다.

View v;
v.setAlpha(.5f);
android:background="@android:color/transparent"

위의 내용은 제가 알고 있는 것입니다...커스텀 버튼 클래스를 만드는 것이 가장 좋은 생각이라고 생각합니다.

11 API 11
최근에 나는 0과 1사이의 값을 가지는 안드로이드:alpha xml 속성을 발견했습니다.해당 방법은 setAlpha(float)입니다.

비록 ~일지라도btnMybutton.getBackground().setAlpha(45);좋은 생각이네요, 배경에 알파를 적용할 뿐 전체 보기는 적용하지 않습니다.

알파를 적용하여 보기 사용btnMybutton.setAlpha(0.30f);대신. 보기에 불투명도가 적용됩니다보기에 불투명도를 적용합니다.0과 1 사이의 값을 허용합니다.

의사는 이렇게 말합니다.

보기의 불투명도를 설정합니다.이 값은 0에서 1 사이의 값이며, 여기서 0은 뷰가 완전히 투명함을 의미하고 1은 뷰가 완전히 불투명함을 의미합니다.이 보기가 SetAlpha(int)를 재정의하여 true를 반환하는 경우 이 보기는 불투명도 자체를 적용합니다.그렇지 않으면 이 메서드를 호출하는 것은 setLayerType(int, Android.graphics)을 호출하는 것과 같습니다.도색) 및 하드웨어 계층 설정.알파를 반투명 값(0 < 알파 < 1)으로 설정하면 성능에 영향을 미칠 수 있습니다.일반적으로 알파 속성은 애니메이션이 퇴색되는 경우처럼 사용하지 않고 일시적으로 사용하는 것이 좋습니다.

보기의 경우 다음과 같이 불투명도를 설정할 수 있습니다.

view_name.setAlpha(float_value);

부동산view.setAlpha(int)API 버전이 11보다 큰 경우 더 이상 사용되지 않습니다.이후로, 재산은 다음과 같습니다..setAlpha(0.5f)사용됩니다.

Holo 테마의 기본 버튼이 약간 투명한 이미지로 구성되어 있어서 ICS/JB에서 이 문제가 발생했습니다.배경의 경우 특히 눈에 띕니다.

진저브레드 vs.ICS+:

Gingerbread ICS

각 해상도별로 그릴 수 있는 모든 상태와 이미지를 복사하고 투명한 이미지를 견고하게 만드는 것은 힘든 일입니다. 그래서 저는 버튼을 흰색 바탕의 홀더에 감는 더 더러운 방법을 선택했습니다.다음은 바로 다음과 같은 작업을 수행하는 조잡한 XML 그리기(ButtonHolder)입니다.

XML 파일

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              style="@style/Content">
  <RelativeLayout style="@style/ButtonHolder">
      <Button android:id="@+id/myButton"
              style="@style/Button"
              android:text="@string/proceed"/>
    </RelativeLayout>
</LinearLayout>

ButtonHolder.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <solid android:color="@color/white"/>
    </shape>
  </item>

</layer-list>

styles.xml

.
.
.      
  <style name="ButtonHolder">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:background">@drawable/buttonholder</item>
  </style>

  <style name="Button" parent="@android:style/Widget.Button">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:textStyle">bold</item>
  </style>
.
.
.

그러나 홀로 버튼 영상에는 눌린 공간을 설명하기 위한 여백이 포함되어 있으므로 흰색 테두리가 나타납니다.

Too much white Too much white pressed

따라서 해결책은 흰색 배경에 여백(4dp가 적합)과 둥근 모서리(2dp)를 제공하여 흰색을 완전히 숨기면서도 단추를 견고하게 만드는 것입니다.

ButtonHolder.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item>
    <shape android:shape="rectangle">
      <solid android:color="@android:color/transparent"/>
    </shape>
  </item>

  <item android:top="4dp" android:bottom="4dp" android:left="4dp" android:right="4dp">
    <shape android:shape="rectangle">
      <solid android:color="@color/white"/>
      <corners android:radius="2dp" />
    </shape>
  </item>

</layer-list>

최종 결과는 다음과 같습니다.

No white No white pressed

v14+의 경우 이 스타일을 대상으로 하고, Gingerbread/Honeycomb의 경우 기본 버튼 이미지 크기가 ICS 및 JB와 다르기 때문에 이 스타일을 조정하거나 제외해야 합니다(예: Gingerbread 버튼 뒤에 있는 이 정확한 스타일로 인해 버튼 아래에 흰색이 약간 표시됨).

textView color에 대한 API < 11에 대해 다음을 수행했습니다.

int textViewColor = textView.getTextColors().getDefaultColor(); 
textView.setTextColor(Color.argb(128, Color.red(textViewColor), Color.green(textViewColor), Color.blue(textViewColor))); //50% transparent

좀 번거롭긴 하지만, 야, 효과가 있네요 :-)

코틀린을 사용하면 알파를 이렇게 쉽게 설정할 수 있습니다.

imageView.alpha= 0.5F

여기서 값은 부동 소수여야 합니다.

나는 이것이 이미 많은 답을 가지고 있다는 것을 알지만, 나는 버튼의 경우 당신만의 .xml 선택기를 만들고 그것을 그 버튼의 배경으로 설정하는 것이 가장 쉽다는 것을 알았습니다.이를 통해 누르면 또는 활성화된 상태 등을 변경할 수도 있습니다.여기 제가 사용하는 것의 간단한 토막이 있습니다.색상에 투명도를 추가하려면 선행 16진수 값(#XXccccc)을 추가합니다.(XX == "색의 알파")

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#70c656" />
            <stroke
                android:width="1dp"
                android:color="#53933f" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#70c656"
                android:endColor="#53933f"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#53933f" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

언급URL : https://stackoverflow.com/questions/2838757/how-to-set-opacity-alpha-for-view-in-android