2014-07-15 16 views
5

Tôi là nhà phát triển phía khách hàng đã nhập gần đây vào một dự án Android.Tôi có thể thực hiện các phép toán trên các biến và các biến không?

Trong thế giới phía khách hàng, chúng tôi có các khung công tác như SASS cho phép chúng tôi thực hiện các phép toán trên các biến.

Trong tài nguyên về kiểu Android, chúng tôi đã nhận được Biến và Thứ nguyên. Câu hỏi của tôi là nếu nó có thể đạt được điều đó trong Android là tốt.

Ví dụ:

dimens.xml 
<dimen name="baseFontSize">18sp</dimen> 

styles.xml 
<style name="heading1"> 
    <item name="android:textSize"> @dimen/baseFontSize * 2.5 </item> 
    ... 
</style> 

tôi xác định một đơn vị kích thước phông chữ cơ bản, và chơi với nó cùng tất cả các ứng dụng.

Nếu không thể, thực hành tốt nhất để đạt được điều đó bằng cách sử dụng Android Way.

+0

Tôi đoán không, nhưng bạn có thể đặt động cơ mờ, ví dụ: kích thước văn bản trong một TextView. –

+0

Ý của bạn là Marcelo? Bạn có thể giải thích về nó trong câu trả lời không? – neoswf

+0

Mục đích cuối cùng của bạn là gì trong việc kiểm tra kích thước phông chữ như thế này? Bạn đang thử nghiệm cho nhiều màn hình? –

Trả lời

2

Bạn có thể tạo bộ điều khiển chính để xử lý tất cả các bộ tỷ lệ của mình.

Ví dụ, bạn có một bố cục:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/my_text_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" 
     android:textSize="16sp" /> 

</RelativeLayout> 

Và bạn quy mô muốn văn bản kích thước android:textSize="16sp" bởi một quy mô dimens.xml.

Tạo tỷ lệ quy mô của bạn trong một dimens.xml:

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

    <item name="scaleRate" format="float" type="dimen">2.5</item> 

</resources> 

Và sau khi bạn tạo bạn điều khiển chính như thế này:

package com.example.stackoverflowsandbox; 

import android.content.Context; 
import android.widget.TextView; 

public class MyScaleController { 

    public static void applyTextSizeScale(final Context context, final TextView myTextView) { 
     final float currentTextSize = myTextView.getTextSize(); 

     myTextView.setTextSize(currentTextSize * context.getResources().getDimension(R.dimen.scaleRate)); 
    } 
} 

Vì vậy, bạn sử dụng như thế:

package com.example.stackoverflowsandbox; 

import android.app.Activity; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(final android.os.Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.activity_main); 

     final TextView myTextView = (TextView) this.findViewById(R.id.my_text_view); 

     MyScaleController.applyTextSizeScale(this, myTextView); 
    } 
} 

Bây giờ bạn có thể tạo nhiều kích thước tỷ lệ nhỏ cho nhiều kích thước màn hình. Những gì bạn wann ở lần đầu tiên, làm cho calc toán học trong tập tin XML, sẽ không hoạt động. Nhưng theo cách tôi đoán bạn có cách tiếp cận tốt nhất.

+1

Cảm ơn bạn đã trả lời câu hỏi của bạn @Marcelo, nhưng tôi muốn tìm cách để làm điều đó chỉ trong XML. Như tôi đã nói trong một trong những ý kiến ​​trong OP, tôi muốn tạo ra một hệ thống phong cách có thể mở rộng và ổn định. Rằng tôi có thể thay đổi đơn giản trong tập tin kiểu và nó có thể truy cập dễ dàng để sửa đổi trong tương lai. Làm điều đó bên trong Lớp học sẽ phá vỡ sự đơn giản và khả năng mở rộng mà tôi muốn đạt được. '' 'Sorry''' Tôi đã làm cho bạn viết cho tôi một câu trả lời đầu tư như vậy. Tôi không hiểu ý bạn trong bình luận của bạn. – neoswf

+0

Điều bạn có thể làm là tạo bộ điều khiển chính mà bạn sử dụng để làm mờ, bạn có thể giữ cho bạn làm mờ các kiểu và tỷ lệ và người dùng điều khiển chính của bạn để quản lý nó. Tôi sẽ cập nhật câu trả lời của mình để tìm ra những gì tôi đã nói. –

+1

@neoswf kiểm tra câu trả lời của tôi ngay bây giờ, tôi đoán sẽ giúp bạn. –

Các vấn đề liên quan