2012-07-07 17 views
9
में

मैं अपने आवेदन के भीतर निम्नलिखित को दोहराने के लिए देख रहा हूँ इसके अंदर। इस बटन में तीन दृश्य राज्य होंगे -> अप्रत्याशित, कमी और वृद्धि (जैसा उपर्युक्त छवि में देखा गया है, उपयोगकर्ता वृद्धि तीरों को टैप करता है और बटन उस तरफ दबाया जाता है)एक पाठ दृश्य को बढ़ा एंड्रॉयड

यहां मेरे 3 बटन राज्य हैं:

enter image description here enter image description here enter image description here

आप देख सकते हैं, समस्या मेरे पास है सही ढंग से तिरछा/पाठ दृश्य को घुमाने तो यह नेत्रहीन सही लग रहा है और बटन के साथ slanted प्रकट होता है जब इसकी वृद्धि हुई है या किया जा रहा करने में सक्षम किया जा रहा है की कमी हुई।

मैं दो अलग-अलग दृष्टिकोण अब तक की कोशिश की है:

@Override 
public void onDraw(Canvas canvas) { 
    canvas.save(); 

    canvas.skew(0.2f, 0f); 

    super.onDraw(canvas); 
    canvas.restore(); 
} 
  • एकीकृत Rotate3dAnimation:

    • जो onDraw() विधि ओवरराइड करता है कैनवास तिरछा करने के लिए एक कस्टम पाठ दृश्य कक्षा बनाएं वर्ग (स्रोत here) और कई विभिन्न रूपों में इस्तेमाल किया जैसे वांछित परिणाम प्राप्त करने के लिए:

      Rotate3dAnimation skew = new Rotate3dAnimation(
            30, 0, centerX, centerY, 0, false); 
          txtAmount.startAnimation(skew); 
      

    दुर्भाग्य से, मैं काफी सटीक नतीजा यह है कि इसके बाद के संस्करण पहली छवि दर्पण नहीं मिल रहा है। मैं Z- अक्ष के साथ मान सेट के साथ भ्रमित कर रहा हूँ हो रही, तिरछा, बारी बारी से आदि

    मैं बहुत जो कोई भी इस सामान के साथ अनुभव है से किसी भी मदद की सराहना करेंगे। अग्रिम धन्यवाद

  • उत्तर

    7

    खैर मैं भी कोशिश की और मैं कुछ इस तरह के साथ आया था:

    public class DemoActivity extends TextView { 
        Context context; 
        String firstText = "$120.00"; 
    
    public DemoActivity(Context context) 
        { 
        super(context); 
        this.context = context; 
    
        } 
    
    
        @Override 
        protected void onDraw(Canvas canvas) { 
        super.onDraw(canvas); 
        setText(firstText); 
        setTextSize(30); 
        canvas.skew(1.0f, 0.3f); //you need to change values over here 
        Rotate3dAnimation skew = new Rotate3dAnimation(
           -20, 30,200, 200, 0, false); //here too 
        startAnimation(skew); 
    
         } 
        } 
    

    मैं के रूप में एक निर्गम मिला:

    enter image description here

    मैं परीक्षण द्वारा मूल्यों में परिवर्तन का अनुमान लगाकर त्रुटि आपकी समस्या का समाधान कर सकते हैं। उम्मीद है कि यह मदद करता है।

    +0

    हाय पार्थ में TextViewDemo का एक उदाहरण बना सकते हैं, आपके उत्तर के लिए धन्यवाद। दो दृष्टिकोणों को संयोजित करके और जैसे आपने कहा, मूल्यों को थोड़ा बदलना, मैं अंतिम परिणाम से खुश हूं। मुझे लगता है कि मैं अंततः वहां पहुंच गया होता लेकिन आपका जवाब इसे बढ़ा देता है :) – elgoog

    +2

    कोई गतिविधि टेक्स्टव्यू का विस्तार क्यों करती है? निश्चित रूप से यह सिर्फ उलझन में है .. –

    +1

    यह नाम @ जेम्स गुडविन का सिर्फ एक बुरा विकल्प है लेकिन यह बहुत अच्छा काम करता है! – Mars

    0

    पार्थ दोषी जवाब देने के लिए धन्यवाद। उनका जवाब चलाने के लिए जो मैं यहाँ साझा कर रहा है किसी और समय बचाने के लिए एक छोटे से फेरबदल की जरूरत है।

    पहले src फ़ोल्डर में एक वर्ग बना सकते हैं और तीन कंस्ट्रक्टर्स के सभी लिखें।

    public class TextViewDemo extends TextView { 
    
    Context context; 
    String text = "TESTING 3DX TOOLS"; 
    
    public TextViewDemo(Context context) { 
        super(context); 
        this.context = context; 
    } 
    
    public TextViewDemo(Context context, AttributeSet attrs) { 
        super(context, attrs); 
        this.context = context; 
    } 
    
    public TextViewDemo(Context context, AttributeSet attrs, int defStyle) { 
        super(context, attrs, defStyle); 
        this.context = context; 
    } 
    
    @Override 
    protected void onDraw(Canvas canvas) { 
        // TODO Auto-generated method stub 
        super.onDraw(canvas); 
        setText(text); 
        setTextSize(30); 
        canvas.skew(0.5f, 1.0f); // you need to change values over here 
        Rotate3dAnimation skew = new Rotate3dAnimation(-50, 30, 0, 0, 0, 
          false); // here too 
        startAnimation(skew); 
    
    } 
    

    }

    आप में रेस/लेआउट/my_layout.xml फ़ाइल आप अपने कस्टम बनाया TextView के एक टैग जोड़ सकते हैं।

    <com.yourpackage.name.TextViewDemo 
        android:id="@+id/name" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true" 
        android:text="Hello World" 
    <!-- All parameters and value shall remain same --> 
    /> 
    

    किसी अन्य दृश्य की तरह, आप अपने OnCreate() विधि

    TextViewDemo txtDemo = (TextViewDemo) findViewById(R.id.name); 
    

    सादर