Android và cài đặt alpha cho (hình ảnh) xem alpha


Câu trả lời:


195

Không, không có, hãy xem phần "Thuộc tính XML có liên quan" bị thiếu trong tài liệu ImageView.setAlpha (int) . Cách khác là sử dụng View.setAlpha (float)đối tác XMLandroid:alpha. Nó có phạm vi từ 0,0 đến 1,0 thay vì 0 đến 255. Sử dụng nó, ví dụ như

<ImageView android:alpha="0.4">

Tuy nhiên, cái sau chỉ khả dụng kể từ API cấp 11.


7
Ngay cả khi tôi chỉ lặp lại bản thân mình ở đây: ImageView.setAlpha(int)đang mất một intthời gian android:alphađể nổi, thì nói đúng ra cái sau không phải là đối tác XML chính xác với cái trước, nhưng nó là đối trọng View.setAlpha(float). Và như đã đề cập nhiều lần ở đây, android:alpha/ View.setAlpha(float)chỉ có sẵn ở cấp độ API 11.
sschuberth

sự khác biệt là phạm vi chấp nhận được là 0-1 cho số float và 0-255 cho số một.
ataulm

232

Nó dễ dàng hơn các phản ứng khác. Có một giá trị xml nhận giá trị alphagấp đôi.

android:alpha="0.0" đó là vô hình

android:alpha="0.5" nhìn xuyên qua

android:alpha="1.0" nhìn thấy đầy đủ

Đó là cách nó hoạt động.


15
setAlpha(float)android:alphachỉ kể từ API 11 (Android 3.0). API trước 11 phải sử dụng mã để đặt alpha cho hình ảnh. Như sschuberth đã nói trong anser ở trên.
Salw

@Antonio Tại sao? Câu trả lời này không thêm bất kỳ thông tin nào lên đầu tôi, và ngược lại là chưa đầy đủ.
sschuberth

@sschuberth câu trả lời của bạn là hoàn toàn chính xác, nhưng việc thiếu một ví dụ có thể khiến câu trả lời này gây chú ý hơn câu trả lời của bạn. Mặc dù câu trả lời của bạn cung cấp nhiều thông tin hơn, câu trả lời này cung cấp một giải pháp gần hơn với những gì tôi thực sự cần. Xin vui lòng, thêm một số ví dụ để sử dụng những gì bạn đã giải thích, điều đó hoàn toàn sẽ giúp!
Antonio

@Antonio Xong. Tôi đã thực hiện câu trả lời của tôi bây giờ siêu Duper-over-verbose ;-)
sschuberth

53

Tôi không chắc chắn về XML nhưng bạn có thể thực hiện bằng mã theo cách sau.

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

Trong API trước 11:

  • phạm vi là từ 0 đến 255 (đã bao gồm), 0 là trong suốt và 255 là mờ đục.

Trong API 11+:

  • phạm vi là từ 0f đến 1f (đã bao gồm), 0f trong suốt và 1f mờ đục.

2
Vâng tôi biết. (Tôi hy vọng điều này được ẩn giấu trong câu hỏi.) Một điểm của XML là loại bỏ một số mã này. Nó không có ý nghĩa với tôi tại sao alphakhông có đối tác thuộc tính XML khi các kích cỡ, vị trí khác nhau làm.
SK9

tôi tự hỏi: tại sao nó bị phản đối? Có phải vì bây giờ họ có một tham số float?
nhà phát triển Android

Có, bạn có thể sử dụng imageView.setAlpha (1.0f), nhưng yêu cầu API cấp 11.
Tony Ceralva

12

Có thể là một sự thay thế hữu ích cho một nền màu trơn :

Đặt linearLayout trên ImageView và sử dụng linearLayout làm bộ lọc độ mờ. Trong một ví dụ nhỏ sau với nền đen:

<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>

Thay đổi thuộc tính android: nền của linearLayout giữa # 00000000 (hoàn toàn trong suốt) và # FF000000 (mờ hoàn toàn).


1
Không thực sự tốt nhất để làm điều đó để giải quyết vấn đề alpha của một vấn đề hình ảnh đặc biệt là trên thiết bị điện thoại.
Prakash Nadar

Điều này hoạt động tuyệt vời khi bạn chỉ muốn làm cho nền trong suốt nhưng KHÔNG phải là con của nó. Sử dụng alpha trên thùng chứa cha mẹ, làm cho tất cả các con của nó cũng trong suốt
noni

8

Hiện tại có một giải pháp thay thế XML:

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

Đó là: android: alpha = "0,7"

Với giá trị từ 0 (trong suốt) đến 1 (mờ).


4

sử dụng android: alpha = 0,5 để đạt được độ mờ 50% và để chuyển các biểu tượng Vật liệu Android từ Đen sang Xám.


4

setAlpha(int)không được dùng nữa trong API 16:Android 4.1

Vui lòng sử dụng setImageAlpha(int)thay thế


3

Sử dụng mẫu này để phiên bản cổ của 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

Có thể đặt alpha cùng với màu bằng định dạng hex sau #ARGB hoặc #AARRGGBB. Xem http://developer.android.com/guide/topics/resource/color-list-resource.html


Tôi muốn đặt alpha của hình ảnh bằng thuộc tính XML. Không giúp đỡ à?
SK9

Tôi đang sử dụng điều này để làm mờ bố cục trên một bố cục với hình ảnh nền, chắc chắn bạn sẽ đặt alpha của một hình ảnh trong chính hình ảnh?
Cấp

Bạn có ý nghĩa gì "trong chính hình ảnh"? Trong XML? Có thể giám sát, nhưng không có thuộc tính alpha XML.
SK9

Ý tôi là khi bạn tạo hình ảnh, bạn sẽ thêm một lớp trong suốt và đặt độ mờ của hình ảnh của bạn thành 50 hoặc bất kỳ giá trị nào bạn yêu cầu.
Cấp

Tôi rất ngạc nhiên rằng android: tint không có hiệu lực. Nó cho phép cho một giá trị alpha ... nhưng nó không có tác dụng trên một hình ảnh trắng: - (((((
Có người Một nơi nào đó
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.