ตั้งพื้นหลังโปร่งใสของการดูภาพบน Android


334

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

ฉันได้ลองสิ่งนี้แล้ว:

mImageview.setBackgroundResource(R.color.trans);

ที่ไหน→trans<color name="trans">#00000000 </color>


สิ่งนี้สามารถช่วยคุณได้: stackoverflow.com/questions/5445085/…
Martin Stanimirov

คำตอบ:


571

ใน XML ของคุณให้ตั้งค่าBackgroundแอตทริบิวต์เป็นสีWhite(#FFFFFF)เฉดสีหรือBlack(#000000)สีใดก็ได้ หากคุณต้องการความโปร่งใสเพียงใส่ 80 ก่อนรหัสแฮชจริง:

#80000000

นี่จะเปลี่ยนสีที่คุณต้องการให้เป็นสีโปร่งใส .. :)


3
@Harshad: มันเป็นไปได้ที่จะตั้งค่าการพูด 40% โปร่งใสสำหรับการตั้งค่าภาพพื้นหลังด้วยView.setBackgroundResource(R.drawable.something)?
Luis A. Florit

@ LuisA.Florit ฉันพบลิงค์นี้ซึ่งคุณต้องคูณ 0.4 (40/100) เป็นค่า RGB ของคุณ ไม่แน่ใจว่าสิ่งนี้มีประโยชน์หรือไม่ แต่คุณสามารถลองใช้ได้ forums.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad

3
@Harshad: ขออภัยฉันไม่เข้าใจคำตอบของคุณ ฉันไม่มีค่า RGB แต่ TextView ที่มีภาพพื้นหลังที่ฉันต้องการจะพูดโปร่งใส 50% แต่อย่างไรก็ตามผมพบคำตอบที่นี่ใน View.getBackground().setAlpha(50)StackOverflow: ไม่ง่ายกว่านี้ใช่มั้ย : o) อย่างไรก็ตามขอขอบคุณสำหรับความช่วยเหลือของคุณ !!
Luis A. Florit

21
หากคุณเพิ่มหมายเลขใด ๆ จาก 01 ถึง 99 ก่อนรหัสแฮชจริงมันจะให้ความโปร่งใสแก่คุณ เช่นสีดำที่มีความโปร่งใสมากกว่า - #10000000 สีดำที่มีความโปร่งใสน้อยกว่า - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp ไม่เพียง แต่จาก 01 ถึง 99 เป็นส่วนที่เหลือของตัวเลขเหล่านี้ยังเป็นเลขฐานสิบหกเพื่อให้คุณสามารถใส่อะไรจาก 00 ถึง ff เพื่อความโปร่งใสห้าสิบเปอร์เซ็นต์คุณควรใส่ 80 แทน 50 และสำหรับคนอื่น ๆ คุณมีการคำนวณพื้นฐานที่ต้องทำ ...
Nemanja Kovacevic

571

คุณสามารถตั้งค่าพื้นหลังโปร่งใสของเลย์เอาต์มุมมองหรือส่วนประกอบใด ๆ โดยเพิ่มรหัสนี้ใน XML:

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

4
ฉันมีปัญหากับ Android เวอร์ชันเก่าที่ไม่ได้จัดการ # ff000000 ว่าโปร่งใสอย่างแท้จริง ใช้สิ่งนี้คงที่
loeschg

11
อาจเป็นเพราะ #FF 00 00 00 = สีดำ 100%
Derk-Jan

3
@Ioeschg ตัวอักษร 2 ตัวแรกใช้สำหรับช่องอัลฟา # 00xxxxxx จะโปร่งใสขณะที่ x คือค่าเลขฐานสิบหกที่คุณต้องการ
user1032613

10
และเทียบเท่าโดยทางโปรแกรมหากใครสนใจก็คือ Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid tryandroid:background="#00ffffff"
ban-geoengineering

179

นอกเหนือจากที่กล่าวถึง Harshad:

อักขระฐานสิบหกสองตัวสามารถผนวกเข้ากับรหัสสีฐานสิบหกใด ๆ อักขระสองตัวแรกในรหัสสีฐานสิบหก 8 หลักแสดงถึงความทึบใน Android

อักขระฐานสิบหกสองตัวสามารถอยู่ในช่วงตั้งแต่ 00 ถึง FF ตัวอย่างเช่น,

  • ฐานสิบหกสีดำทึบแสง - "# 000000"
  • โปร่งใสอย่างสมบูรณ์ - "# 00000000"
  • ทึบแสงเต็มที่ - "# FF000000"
  • โปร่งใส 50% - "# 7F000000"

วิธีนี้คุณสามารถเปลี่ยนสีใด ๆ ให้อยู่ในระดับความโปร่งใส

วิธีค้นหาคำนำหน้าเลขฐานสิบหกจากเปอร์เซ็นต์:

หารจำนวนเปอร์เซ็นต์ด้วย 100 และคูณด้วย 255 เพื่อรับค่าทศนิยม แปลงทศนิยมเลขฐานสิบหกที่นี่

ตัวอย่างเช่นสำหรับ 50%, 50/100 * 255 = 127 การใช้ลิงก์เราจะได้รับค่าเลขฐานสิบหก 7F

แหล่งที่มา: Android: วิธีสร้างพื้นหลังโปร่งใสหรือทึบแสง


3
จริงที่สมบูรณ์แบบ 50% โปร่งใส 7F และไม่ได้ 80;)
shinyuX

147

หากคุณต้องการเพิ่มความโปร่งใส 20% หรือ 30% คุณควรพาดอักขระเพิ่มเติมอีกสองตัวลงในรหัสฐานสิบหกเช่น CC

บันทึก

android:background="#CCFF0088" ใน XML

โดยที่ CC คือค่าอัลฟ่า FF คือปัจจัยสีแดง 00 คือปัจจัยสีเขียวและ 88 คือปัจจัยสีฟ้า

รหัสทึบบางอย่าง:

ค่าความทึบแสง Hex

100%  FF
95%  F2
90%  E6
85%  D9
80%  CC
75%  BF
70%  B3
65%  A6
60%  99
55%  8C
50%  80
45%  73
40%  66
35%  59
30%  4D
25%  40
20%  33
15%  26
10%  1A
5%   0D
0%   00

นอกจากนี้คุณยังสามารถตั้งค่าความทึบโดยทางโปรแกรมเช่น:

yourView.getBackground().setAlpha(127);

ตั้งค่าความทึบระหว่าง 0 (โปร่งใสเต็มที่) ถึง 255 (ทึบแสงสมบูรณ์) 127.5 เท่ากับ 50%

คุณสามารถสร้างความโปร่งใสในระดับใดก็ได้โดยใช้สูตรที่กำหนด หากคุณต้องการความโปร่งใสครึ่งหนึ่ง:

 16 |128          Where 128 is the half of 256.
    |8 -0         So it means 80 is half transparent.

และเพื่อความโปร่งใส 25%:

16 |64            Where 64 is the quarter of 256.
   |4 -0          So it means 40 is quarter transparent.

42

ใช้รหัสด้านล่างสำหรับสีดำ:

<color name="black">#000000</color>

ตอนนี้ถ้าคุณต้องการใช้ความทึบคุณสามารถใช้รหัสด้านล่าง:

<color name="black">#99000000</color>

และด้านล่างสำหรับรหัสความทึบ:

100% - FF

95% - F2

90% - E6

85% - D9

80% - CC

75% - BF

70% - B3

65% - A6

60% - 99

55% - 8C

50% - 80

45% - 73

40% - 66

35% - 59

30% - 4D

25% - 40

20% - 33

15% - 26

10% - 1A

5% - 0D

0% - 00


27

มีค่าคงที่ที่กำหนดไว้ล่วงหน้าแล้ว Color.TRANSPARENTใช้


1
การใช้ค่าคงที่ควรเป็นวิธีที่ดีที่สุดในการทำความสะอาด! แต่ในกรณีนี้ค่าของColor.TRANSPARENTถูกตั้งค่าเป็น0x00000000(ไม่ใช่ทึบแสงเต็มที่ที่คาดไว้0xFF000000) ดังนั้นขึ้นอยู่กับวิธีที่คุณไปเกี่ยวกับมันค่าคงที่นี้อาจไม่ช่วยให้บรรลุความโปร่งใสจริง ๆ ! ยังคง +1 สำหรับการแนะนำค่าคงที่!
Levite

24

มีตัวโปร่งใสในตัว Android: R.color.transparent อยู่แล้ว http://developer.android.com/reference/android/R.color.html#transparent

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


ภาพที่ไม่ได้ transparent..it HAV ใด background..i HV ยังพยายามพื้นหลัง IMAGE ดูการตั้งค่าเป็น u hv said..but มันไม่ได้ทำงาน ... plz ช่วยเหลือ ..
mudit

คุณสามารถโพสต์รายละเอียดเพิ่มเติมเช่นลิงค์ไปยังรูปภาพที่คุณใช้และรหัสและเลย์เอาต์ที่คุณใช้อยู่ได้หรือไม่?
ซับซ้อน



10

หรือแยกวิเคราะห์ ID ทรัพยากรด้วยรหัสต่อไปนี้:

  mComponentName.setBackgroundColor(getResources().getColor(android.R.color.transparent));

10

ในไฟล์ XML ของคุณตั้งค่าแอตทริบิวต์ "Alpha"

เช่น

android:alpha="0.0" // for transparent
android:alpha="1.0" // for opaque

คุณสามารถให้ค่าใด ๆ ระหว่าง 0.0 ถึง 1.0 เป็นทศนิยมเพื่อใช้ความโปร่งใสที่จำเป็น ตัวอย่างเช่น 0.5 ความโปร่งใสเหมาะอย่างยิ่งสำหรับส่วนประกอบที่ถูกปิดใช้งาน


5

สำหรับผู้ที่ยังคงประสบปัญหานี้คุณอาจลองทำสิ่งนี้
element.getBackground().setAlpha(0);


ฉันได้รับNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky

1
@IgorGanapolsky: พยายามที่จะดูของคุณelementดูว่าเป็นวัตถุ null
SuicideSheep

5

ใช้สิ่งต่อไปนี้เพื่อความโปร่งใสโดยสมบูรณ์:

#00000000

เมื่อฉันลองกับ # 80000000 ฉันได้ภาพซ้อนทับโปร่งใสสีดำซึ่งฉันไม่ต้องการ ลองเปลี่ยนตัวเลขสองตัวแรก มันควบคุมระดับของความโปร่งใสเช่น

#00000000
#10000000
#20000000
#30000000

สีที่สมบูรณ์แบบบนความมืดโปร่งแสง
Najib Ahmed Puthawala



4

ตัวเลือกการทำงานอื่นที่ฉันเจอคือการตั้งค่า android:background="@null"


2

คุณสามารถใช้View.setAlpha(float)เพื่อเปลี่ยนการเปิดเผยได้อย่างแม่นยำ

0 จะโปร่งใส 1 มองเห็นได้ทั้งหมด ;)


1
นั่นคือการเปลี่ยนอัลฟ่าของมุมมองไม่ใช่พื้นหลัง!
IgorGanapolsky

มุมมองทั้งหมดจะโปร่งใสรวมถึงเนื้อหา / รูปภาพในนั้นการตั้งค่าอัลฟาที่ผิดในกรณีนี้ ผู้ใช้ต้องการที่จะรักษาความโปร่งใสของภาพไม่เปลี่ยนภาพที่จะโปร่งใส
Haroun Hajem

2

ลองใช้รหัสต่อไปนี้ มันจะช่วยคุณอย่างเต็มที่หรือมากกว่า

  1. ไฟล์. xml ที่ออกแบบมาเพื่อใช้รหัสนี้เพื่อตั้งค่าสีพื้นหลัง:

    android:background="#000000"

    หรือ

    android:background="#FFFFFF"

    รูปภาพอยู่ที่นี่

    หรือคุณสามารถตั้งค่าโดยทางโปรแกรมเช่นกัน

  2. นอกจากนี้คุณสามารถใช้รหัสนี้โดยทางโปรแกรม:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. นอกจากนี้รหัสนี้สำหรับการตั้งค่าสีพื้นหลังเช่นกันโดยทางโปรแกรม:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. รหัสนี้เหมือนกันโดยทางโปรแกรม:

    image.setBackgroundColor(getResources().getColor(Color.WHITE));

สีขึ้นอยู่กับการเลือกสีที่คุณต้องการใช้เพื่อความโปร่งใส ส่วนใหญ่ใช้สีขาวหรือสี #FFFFFF

เกี่ยวกับR.drawable.llabackground: บรรทัดของโค้ดนี้มีไว้สำหรับสไตล์ของพื้นหลังของคุณเช่นบางสิ่งที่พิเศษหรือแตกต่างเพื่อจุดประสงค์ของคุณ คุณยังสามารถใช้สิ่งนี้


2

หากคุณใช้ภาพ XML ที่วาดได้คุณสามารถทำให้โปร่งใสดังที่แสดงในภาพด้านล่างหรือคุณสามารถใช้รหัสสี:

<color name="black">#99000000</color> 

ป้อนคำอธิบายภาพที่นี่


1

คำจำกัดความสีพร้อมข้อมูลความโปร่งใสอาจอยู่ในรูปแบบ

#AARRGGBB#ARGBหรือ

คุณยังสามารถใช้ค่าสั้นเพื่อความโปร่งใสเต็ม: # 0000

ค่าอื่น ๆ เช่น:

white  grey   black
#FFFF  #F888  #F000 - full color
#EFFF  #E888  #E000
#DFFF  #D888  #D000
#CFFF  #C888  #C000
#BFFF  #B888  #B000
#AFFF  #A888  #A000
#9FFF  #9888  #9000
#8FFF  #8888  #8000
#7FFF  #7888  #7000
#6FFF  #6888  #6000
#5FFF  #5888  #5000
#4FFF  #4888  #4000
#3FFF  #3888  #3000
#2FFF  #2888  #2000
#1FFF  #1888  #1000
#0FFF  #0888  #0000 - full transparency

0
ImageView.setBackground(R.drawable.my_background);

ImageView.setBackgroundResource(R.color.colorPrimary);

ImageView.getImageAlpha();

ImageView.setAlpha(125); // transparency

1
แม้ว่ารหัสนี้อาจช่วยในการแก้ปัญหา แต่ก็ไม่ได้อธิบายว่าทำไมและ / หรือวิธีการตอบคำถาม การให้บริบทเพิ่มเติมนี้จะช่วยปรับปรุงมูลค่าระยะยาวอย่างมีนัยสำคัญ โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายรวมถึงข้อ จำกัด และข้อสมมติฐานที่ใช้
Toby Speight

0

ลองสิ่งนี้:

#aa000000

เพื่อความโปร่งใส 000000 = สีดำคุณสามารถเปลี่ยนตัวเลขหกสีเหล่านี้สำหรับสีที่คุณต้องการ


ทรัพยากรของคุณคืออะไรที่จะใช้ aa ก่อน hex สี
Mina Fawzy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.