Đặt nền trong suốt của chế độ xem hình ảnh trên Android


334

Tôi đang sử dụng chế độ xem web trong đó tôi đang thêm chế độ xem hình ảnh. Làm cách nào tôi có thể đặt nền của chế độ xem hình ảnh này thành trong suốt?

Tôi đã thử điều này:

mImageview.setBackgroundResource(R.color.trans);

Trong đó trans<color name="trans">#00000000 </color>.


Điều này có thể giúp bạn: stackoverflow.com/questions/5445085/
Kẻ

Câu trả lời:


571

Trong XML của bạn, đặt Backgroundthuộc tính thành bất kỳ màu, White(#FFFFFF)bóng hoặc Black(#000000)bóng. Nếu bạn muốn minh bạch, chỉ cần đặt 80 trước mã băm thực tế:

#80000000

Điều này sẽ thay đổi bất kỳ màu nào bạn muốn thành một màu trong suốt .. :)


3
@Harshad: Có thể đặt độ trong suốt 40% cho một hình ảnh nền View.setBackgroundResource(R.drawable.something)không?
Luis A. Florit

@ LuisA.Florit Tôi tìm thấy liên kết này nơi bạn cần nhân 0,4 (40/100) với giá trị RGB của bạn. Không chắc chắn nếu điều này là hữu ích nhưng bạn có thể thử nó. forum.esri.com/Thread.asp?c=93&f=1730&t=223940
Harshad

3
@Harshad: Xin lỗi, tôi không hiểu câu trả lời của bạn. Tôi không có bất kỳ giá trị RGB nào, nhưng TextView có hình nền mà tôi muốn, giả sử, trong suốt 50%. Nhưng, dù sao, tôi đã tìm thấy câu trả lời ở đây trong stackoverflow : View.getBackground().setAlpha(50). Không thể đơn giản hơn, phải không? : o) Dù sao đi nữa, cảm ơn sự giúp đỡ của bạn !!
Luis A. Florit

21
Nếu bạn thêm bất kỳ số nào từ 01 đến 99 trước mã băm thực tế, nó sẽ cung cấp cho bạn sự minh bạch. Ví dụ: Màu đen với độ trong suốt hơn - #10000000 Màu đen với độ trong suốt kém hơn - #99000000
AnhSirk Dasarp

64
@AnhSirkDasarp Không chỉ từ 01 đến 99, vì các số còn lại cũng là số thập lục phân nên bạn có thể đặt bất cứ thứ gì từ 00 đến ff. Để minh bạch năm mươi phần trăm, bạn nên đặt 80 thay vì 50 và đối với những người khác, bạn có một số tính toán cơ bản để thực hiện ...
Nemanja Kovacevic

571

Bạn có thể đặt nền trong suốt của bất kỳ bố cục, bất kỳ chế độ xem hoặc bất kỳ thành phần nào bằng cách thêm mã này vào XML:

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

4
Tôi gặp sự cố trên các phiên bản Android cũ hơn mà không xử lý # ff000000 hoàn toàn trong suốt. Sử dụng nó cố định nó.
loeschg

11
Có lẽ vì #FF 00 00 00 = 100% màu đen.
Derk-Jan

3
@Ioeschg 2 chữ cái đầu tiên dành cho kênh alpha. # 00xxxxxx sẽ trong suốt, trong khi x là bất kỳ giá trị hex nào bạn muốn.
dùng1032613

10
Và tương đương theo chương trình nếu ai đó quan tâm là Android.Resource.Color.Transparent :)
leoneboaventura

3
@undroid thửandroid:background="#00ffffff"
ban-

179

Ngoài những gì Harshad đã đề cập:

Hai ký tự thập lục phân có thể được thêm vào bất kỳ mã màu thập lục phân nào. Hai ký tự đầu tiên trong mã màu hex gồm 8 chữ số thể hiện độ mờ đục của nó trong Android.

Hai ký tự thập lục phân có thể nằm trong khoảng từ 00 đến FF. Ví dụ,

  • Hex đen mờ bình thường- "# 000000"
  • Hoàn toàn minh bạch - "# 00000000"
  • Hoàn toàn mờ đục - "# FF000000"
  • Minh bạch 50% - "# 7F000000"

Bằng cách này bạn có thể thay đổi bất kỳ màu nào thành bất kỳ mức độ minh bạch nào.

Để tìm tiền tố thập lục phân từ phần trăm:

Chia số phần trăm cho 100 và nhân với 255 để có giá trị thập phân. Chuyển đổi số thập phân thành thập lục phân ở đây .

Ví dụ: với 50%, 50/100 * 255 = 127. Sử dụng liên kết, chúng tôi nhận được giá trị thập lục phân 7F.

Nguồn: Android: cách tạo nền trong suốt hoặc mờ


3
trên thực tế, độ trong suốt 50% hoàn hảo là 7F chứ không phải 80;)
shinyuX

147

Nếu bạn muốn thêm độ trong suốt 20% hoặc 30%, bạn nên thêm trước hai ký tự vào mã thập lục phân, như CC.

Ghi chú

android:background="#CCFF0088" trong XML

Trong đó CC là giá trị alpha, FF là yếu tố màu đỏ, 00 là yếu tố xanh và 88 là yếu tố màu xanh.

Một số mã độ mờ:

Giá trị độ mờ 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

Bạn cũng có thể đặt độ mờ theo chương trình như:

yourView.getBackground().setAlpha(127);

Đặt độ mờ giữa 0 (hoàn toàn trong suốt) thành 255 (hoàn toàn mờ). Con số 127,5 chính xác là 50%.

Bạn có thể tạo bất kỳ mức độ minh bạch nào bằng cách sử dụng công thức đã cho. Nếu bạn muốn một nửa minh bạch:

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

Và để minh bạch 25%:

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

42

Sử dụng mã dưới đây cho màu đen:

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

Bây giờ nếu bạn muốn sử dụng opacity thì bạn có thể sử dụng đoạn mã dưới đây:

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

Và dưới đây cho mã opacity:

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

Đã có một hằng số được xác định trước. Sử dụng Color.TRANSPARENT.


1
Sử dụng một hằng số nên là cách tốt nhất / sạch nhất để đi về nó! Nhưng trong trường hợp này, giá trị của Color.TRANSPARENTđược đặt thành 0x00000000(không phải là hoàn toàn mờ đục dự kiến 0xFF000000), do đó tùy thuộc vào cách bạn thực hiện, hằng số này có thể không thực sự giúp đạt được tính minh bạch! Vẫn +1 cho đề xuất một hằng số!
Levite

24

Đã có một tính năng trong suốt được tích hợp vào Android: R.color.transparent. http://developer.android.com/reference/android/R.color.html#transparent

Nhưng tôi nghĩ rằng bạn có thể muốn làm cho nền của hình ảnh mà bạn đang đặt trong WebView trong suốt, ví dụ, với một PNG trong suốt, thay vì nền ImageView. Nếu hình ảnh thực tế hoàn toàn không nhìn xuyên qua thì nền ImageView không thể được nhìn xuyên qua nó.


hình ảnh trong suốt..tôi không có bất kỳ nền nào..tôi cũng đã thử thiết lập nền hình ảnh như bạn đã nói..nhưng nó không hoạt động ... xin vui lòng giúp đỡ ..
Mudit

Bạn có thể đăng thêm một số chi tiết như liên kết đến hình ảnh bạn đang sử dụng cũng như mã và bố cục bạn đang sử dụng không?
Mâu thuẫn

17

Trong trường hợp bạn muốn nó trong mã, chỉ cần:

mComponentName.setBackgroundColor(Color.parseColor("#80000000"));

13

Hãy thử mã này :)

Mã hexa hoàn toàn trong suốt - "# 00000000"


10

Hoặc, thay thế, phân tích ID tài nguyên với mã sau:

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

10

Trong tệp XML của bạn, đặt thuộc tính "Alpha"

nhu la

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

Bạn có thể đưa ra bất kỳ giá trị nào từ 0,0 đến 1 theo số thập phân để áp dụng độ trong suốt cần thiết. Ví dụ, độ trong suốt 0,5 là lý tưởng cho thành phần bị vô hiệu hóa


5

Đối với những người vẫn đang đối mặt với vấn đề này, bạn có thể thử điều này
element.getBackground().setAlpha(0);


Tôi nhận được mộtNullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
IgorGanapolsky

1
@IgorGanapolsky: hãy thử xem bạn elementcó phải là một đối tượng không
SuicideSheep

5

Sử dụng như sau để minh bạch hoàn toàn:

#00000000

Khi tôi thử với # 80000000, tôi có một lớp phủ màu đen trong suốt mà tôi không muốn. Cố gắng thay đổi hai chữ số đầu tiên; nó kiểm soát mức độ minh bạch, như

#00000000
#10000000
#20000000
#30000000

màu sắc hoàn hảo trong bóng tối trong suốt
Najib Ahmed Puthawala


4

Một cách đơn giản hơn:

mComponentName.setBackgroundResource(android.R.color.transparent);

4

Một tùy chọn làm việc khác mà tôi đã gặp là đặt android:background="@null"


2

Bạn cũng có thể sử dụng View.setAlpha(float)để thay đổi tầm nhìn chính xác.

0 sẽ trong suốt, 1 hiển thị đầy đủ. ;)


1
Điều đó thay đổi alpha của View, KHÔNG phải nền của nó!
IgorGanapolsky

Toàn bộ chế độ xem sau đó sẽ trong suốt bao gồm nội dung / hình ảnh trong đó, cài đặt alpha của bạn sai trong trường hợp này. Người dùng muốn giữ độ trong suốt của Ảnh không thay đổi Ảnh trong suốt.
Haroun Hajem

2

Hãy thử sử dụng mã sau đây. Nó sẽ giúp bạn đầy đủ hoặc nhiều hơn nữa.

  1. Tệp .xml được thiết kế để sử dụng mã này để đặt màu nền:

    android:background="#000000"

    hoặc là

    android:background="#FFFFFF"

    Hình ảnh ở đây

    Hoặc bạn có thể thiết lập nó theo chương trình.

  2. Ngoài ra, bạn có thể sử dụng mã này theo chương trình:

    image.setBackgroundDrawable(getResources().getDrawable(
        R.drawable.llabackground));
  3. Ngoài ra mã này để thiết lập màu nền cũng theo chương trình:

    image.setBackgroundColor(Color.parseColor("#FFFFFF"));
  4. Mã này cho cùng một chương trình:

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

Màu sắc tùy thuộc vào sự lựa chọn của bạn về màu sắc bạn muốn sử dụng cho trong suốt. Chủ yếu sử dụng màu trắng hoặc #FFFFFF.

Về R.drawable.llabackground: Dòng mã này là dành cho phong cách nền của bạn, giống như một cái gì đó đặc biệt hoặc khác biệt cho mục đích của bạn. Bạn cũng có thể sử dụng này.


2

Nếu bạn sử dụng hình ảnh XML có thể vẽ, bạn có thể làm cho nó trong suốt như trong hình bên dưới hoặc bạn có thể sử dụng mã màu:

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

Nhập mô tả hình ảnh ở đây


1

Định nghĩa màu với thông tin trong suốt có thể ở dạng

#AARRGGBBhoặc #ARGB.

Bạn cũng có thể sử dụng giá trị ngắn hơn để minh bạch đầy đủ: # 0000 .

Các giá trị khác là:

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
Mặc dù mã này có thể giúp giải quyết vấn đề, nhưng nó không giải thích được tại sao và / hoặc cách nó trả lời câu hỏi. Cung cấp bối cảnh bổ sung này sẽ cải thiện đáng kể giá trị lâu dài của nó. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích, bao gồm những hạn chế và giả định được áp dụng.
Toby Speight

0

Thử cái này:

#aa000000

Để minh bạch 000000 = đen, bạn có thể thay đổi sáu số này cho màu bạn muốn.


Tài nguyên của bạn để sử dụng aa trước màu hex là gì
Mina Fawzy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.