2012-08-28 47 views
53

Tôi đang trải qua ví dụ kiểm tra. Trong trường hợp đối với một số nền hình ảnh họ đang sử dụng gradient, mã đi như thế nàythuộc tính góc trong gradient android

<?xml version="1.0" encoding="utf-8"?> 


    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#ff0000" 
     android:centerColor="#00ff00" 
     android:endColor="#0000ff" 
     android:angle="180"/> 
    <corners android:radius="5dp" /> 
    </shape> 

trong xml trên, chúng tôi đã không nhận được angle thuộc tính. nhưng khi tôi thay đổi giá trị của angle một chút so với hình mẫu. bất kỳ ai có thể giải thích cho tôi chính xác nó hoạt động như thế nào ........... :)

Trả lời

120

Về cơ bản, Gradient đại diện cho biến thể trong không gian (theo hướng) của bất kỳ số lượng nào. Với màu sắc, nó đại diện cho biến thể của cường độ màu theo hướng được biểu diễn bằng góc. Dưới đây là một số biểu đồ để đại diện cho khái niệm này:
enter image description here

Ở đây hình này hiển thị biến thể màu theo hướng ngang (góc được đặt 0). đang
XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient 
     android:startColor="#000000" 
     android:angle="0"/> 
    </shape> 

enter image description here

đây con số này cho thấy sự biến đổi màu sắc theo hướng ngang (góc được thiết lập 90).
mã XML:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<gradient 
    android:startColor="#000000" 
    android:angle="90"/> 
</shape> 

Bạn cũng có thể sử dụng màu sắc khác nhau như bắt đầu, trung tâm và kết thúc màu sắc. Mã bạn đính kèm chứa tất cả các yếu tố này.

+17

Cảm ơn cho câu trả lời Karn, nhưng có một điều tôi thấy rằng tôi có thể cung cấp chỉ bội số của 45 trong thuộc tính góc, khác hơn là nó bị treo tức là 20, 20, 50 vv –

+0

Có rất nhiều cách, trong đó độ dốc có thể bày tỏ. Ở đây chúng ta đang thực sự sử dụng Linear gradient (độ dốc dọc theo độ dốc thẳng m = (y-y1)/(x-x1)). Khi nó là bội số của 45, biến thể trong x và y giống nhau. Có thể là nguyên nhân của lý do này. Tôi không biết nhiều. – karn

+4

Sử dụng tuyệt vời minh họa giải thích điều này! – Ralphleon

3

Chỉ định màu gradient cho hình dạng. thuộc tính:

android: angle Số nguyên. Góc cho gradient, theo độ. 0 là trái sang phải, 90 là từ dưới lên trên. Nó phải là bội số của 45. Mặc định là 0.

Dường như mô tả trong tài liệu mâu thuẫn với câu trả lời của karn ??

Bạn có thể tìm thêm chi tiết trong documentation

4

bạn có thể muốn tạo độ dốc đường chéo từ mã. Nó dễ dàng hơn nhiều và bạn có nhiều tùy chọn mở từ đó. Đoạn này đã giúp tôi

public void SetGradient(View view) { 
     GradientDrawable gd = new GradientDrawable(
       GradientDrawable.Orientation.TL_BR, 
       new int[]{0xFF141a24, 0xFF293f49, 0xFF72554c}); 
     view.setBackground(gd); 
    } 

hướng sẵn từ lớp GradientDrawable

/*public enum Orientation { 
     *//** draw the gradient from the top to the bottom *//* 
     TOP_BOTTOM, 
     *//** draw the gradient from the top-right to the bottom-left *//* 
     TR_BL, 
     *//** draw the gradient from the right to the left *//* 
     RIGHT_LEFT, 
     *//** draw the gradient from the bottom-right to the top-left *//* 
     BR_TL, 
     *//** draw the gradient from the bottom to the top *//* 
     BOTTOM_TOP, 
     *//** draw the gradient from the bottom-left to the top-right *//* 
     BL_TR, 
     *//** draw the gradient from the left to the right *//* 
     LEFT_RIGHT, 
     *//** draw the gradient from the top-left to the bottom-right *//* 
     TL_BR, 
    }*/ 

và bạn gọi phương thức từ onCreate hoặc onCreateView trong đoạn và vượt qua cái nhìn mẹ (trong trường hợp của tôi).

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.dialog_view_parent, container);   
     ... 

     SetGradient(view); 

     return view; 
    } 
Các vấn đề liên quan