Android และการตั้งค่าอัลฟาสำหรับ (ภาพ) ดูอัลฟา


คำตอบ:


195

ไม่มีมีไม่ได้ดูว่า "XML ที่เกี่ยวข้องคุณสมบัติ" ส่วนที่ขาดหายไปในImageView.setAlpha (int)เอกสาร อีกทางเลือกหนึ่งคือใช้View.setAlpha (float)ซึ่งมีXMLเป็นคู่android:alphaกัน ใช้ช่วง 0.0 ถึง 1.0 แทนที่จะเป็น 0 ถึง 255 ใช้เช่น like

<ImageView android:alpha="0.4">

อย่างไรก็ตามรุ่นหลังมีให้บริการตั้งแต่ API ระดับ 11 เท่านั้น


7
แม้ว่าฉันจะทำซ้ำตัวเองที่นี่: ImageView.setAlpha(int)ใช้เวลาintสักครู่ในandroid:alphaการลอยตัวดังนั้นการพูดอย่างเคร่งครัดว่าหลังไม่ใช่ XML ที่แน่นอนกับอดีต แต่เป็นสิ่งที่คู่View.setAlpha(float)กัน และดังที่ได้กล่าวมาแล้วหลายครั้งที่นี่android:alpha/ View.setAlpha(float)มีให้บริการสำหรับ API ระดับ 11 เท่านั้น
sschuberth

ความแตกต่างคือช่วงที่ยอมรับได้คือ 0-1 สำหรับลูกลอยและ 0-255 สำหรับ int หนึ่ง
ataulm

232

ง่ายกว่าการตอบสนองอื่น ๆ มีค่า xml alphaที่ใช้ค่าสองค่า

android:alpha="0.0" ที่มองไม่เห็น

android:alpha="0.5" ดูผ่าน

android:alpha="1.0" มองเห็นได้เต็มรูปแบบ

นั่นคือวิธีการทำงาน


15
นอกจากนี้setAlpha(float)และandroid:alphaเท่านั้นตั้งแต่ 11 API (Android 3.0) API ก่อนหน้า 11 ต้องใช้รหัสเพื่อตั้งค่าอัลฟาสำหรับรูปภาพ ดังที่ sschuberth ได้กล่าวไว้แล้วใน anser ข้างต้น
ปลาส้ม

@ แอนโทนิโอทำไม? คำตอบนี้ไม่ได้เพิ่มข้อมูลใด ๆ ที่ด้านบนของฉันและในทางกลับกันก็มีความสมบูรณ์น้อยกว่า
sschuberth

@sschuberth คำตอบของคุณถูกต้องสมบูรณ์ แต่การไม่มีตัวอย่างอาจทำให้คำตอบนี้ได้รับความสนใจมากกว่าของคุณ แม้ว่าคำตอบของคุณจะให้ข้อมูลเพิ่มเติม แต่คำตอบนี้ให้คำตอบที่ใกล้เคียงกับสิ่งที่ฉันต้องการจริงๆ โปรดเพิ่มตัวอย่างเพื่อใช้สิ่งที่คุณอธิบายซึ่งจะช่วยได้อย่างแน่นอน!
อันโตนิโอ

@Antonio เสร็จแล้ว. ฉันตอบคำตอบของฉันตอนนี้ super-duper-over-verbose ;-)
sschuberth

53

ฉันไม่แน่ใจเกี่ยวกับ XML แต่คุณสามารถทำได้โดยใช้รหัสด้วยวิธีต่อไปนี้

ImageView myImageView = new ImageView(this);
myImageView.setAlpha(xxx);

ใน pre-API 11:

  • ช่วงอยู่ระหว่าง 0 ถึง 255 (รวม), 0 โปร่งใสและ 255 ทึบแสง

ใน API 11+:

  • ช่วงอยู่ระหว่าง 0f ถึง 1f (รวม) 0f โปร่งใสและ 1f ทึบแสง

2
ใช่ฉันรู้ (ฉันหวังว่านี่จะเป็นนัยในคำถามนี้) จุดหนึ่งของ XML คือการตัดโค้ดนี้ออก มันไม่สมเหตุสมผลสำหรับฉันว่าทำไมalphaไม่มีคู่ของแอตทริบิวต์ XML เมื่อมีขนาดตำแหน่งต่างๆกัน
SK9

ฉันสงสัย: ทำไมถึงเลิกใช้งาน? เป็นเพราะตอนนี้พวกเขามีพารามิเตอร์ float หรือไม่?
นักพัฒนา Android

ใช่คุณสามารถใช้ imageView.setAlpha (1.0f) แต่ต้องใช้ API ระดับ 11
Tony Ceralva

12

อาจเป็นทางเลือกที่เป็นประโยชน์สำหรับพื้นหลังสีล้วน :

วางLinearLayoutไว้บนImageViewและใช้LinearLayoutเป็นตัวกรองความทึบ ในตัวอย่างเล็ก ๆ ต่อไปนี้ที่มีพื้นหลังสีดำ:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF000000" >

<RelativeLayout
    android:id="@+id/relativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon_stop_big" />

    <LinearLayout
        android:id="@+id/opacityFilter"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#CC000000"
        android:orientation="vertical" >
    </LinearLayout>
</RelativeLayout>

เปลี่ยนแอตทริบิวต์android: backgroundของLinearLayoutระหว่าง# 00000000 (โปร่งใสเต็มที่) และ# FF000000 (ทึบแสงเต็มที่)


1
ไม่ใช่วิธีที่ดีที่สุดในการแก้ปัญหาอัลฟ่าของภาพโดยเฉพาะบนอุปกรณ์โทรศัพท์
Prakash Nadar

วิธีนี้ใช้งานได้ดีเมื่อคุณต้องการทำให้พื้นหลังโปร่งใส แต่ไม่ใช่ส่วนย่อย การใช้ alpha บนคอนเทนเนอร์หลักทำให้ลูกทั้งหมดโปร่งใสเช่นกัน
โนนิ

8

ขณะนี้มีทางเลือก XML:

        <ImageView
        android:id="@+id/example"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/example"
        android:alpha="0.7" />

มันคือ: android: alpha = "0.7"

โดยมีค่าตั้งแต่ 0 (โปร่งใส) ถึง 1 (ทึบแสง)




3

ใช้แบบฟอร์มนี้กับ Android เวอร์ชันโบราณ

ImageView myImageView;
myImageView = (ImageView) findViewById(R.id.img);

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); 
alpha.setFillAfter(true); 
myImageView.startAnimation(alpha);

0

สามารถตั้งค่าอัลฟาพร้อมกับสีโดยใช้รูปแบบฐานสิบหกต่อไปนี้ #ARGB หรือ #AARRGGBB โปรดดูhttp://developer.android.com/guide/topics/resources/color-list-resource.html


ฉันต้องการตั้งค่าอัลฟาของรูปภาพโดยใช้แอตทริบิวต์ XML สิ่งนี้ช่วยได้หรือไม่?
SK9

ฉันกำลังใช้สิ่งนี้เพื่อผสมผสานเลย์เอาต์เหนือเลย์เอาต์ที่มีภาพพื้นหลังคุณจะตั้งค่าอัลฟ่าของรูปภาพในรูปภาพเองหรือไม่?
มอบให้

คุณหมายถึงอะไร "ในภาพตัวเอง"? ภายใน XML? อาจมีการกำกับดูแล แต่ไม่มีแอตทริบิวต์ alpha XML
SK9

ฉันหมายถึงเมื่อคุณสร้างภาพคุณจะต้องเพิ่มเลเยอร์โปร่งใสและตั้งค่าความทึบของภาพเป็น 50 หรือค่าใดก็ได้ที่คุณต้องการ
แกรนท์

ฉันแปลกใจมากที่ android: tint ไม่มีผล อนุญาตให้ใช้ค่าอัลฟา ... แต่ไม่มีผลกับภาพขาว:
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.