1. importandroid.content.Context;  
2. importandroid.graphics.Paint;  
3. importandroid.util.AttributeSet;  
4. importandroid.widget.TextView;  
5.  
6. publicclassCustomTextView extendsTextView {  
7.  
8.    privatestaticfloatDEFAULT_MIN_TEXT_SIZE = 10;  
9.    privatestaticfloatDEFAULT_MAX_TEXT_SIZE = 20;  
10.  
11.    // Attributes 
12.    privatePaint testPaint;  
13.    privatefloatminTextSize, maxTextSize;  
14.  
15.    publicCustomTextView(Context context, AttributeSet attrs) {  
16.        super(context, attrs);  
17.        initialise();  
18.    }  
19.  
20.    privatevoidinitialise() {  
21.        testPaint = newPaint();  
22.        testPaint.set(this.getPaint());  
23.  
24.        // max size defaults to the intially specified text size unless it is 
25.        // too small 
26.        maxTextSize = this.getTextSize();  
27.  
28.        if(maxTextSize <= DEFAULT_MIN_TEXT_SIZE) {  
29.            maxTextSize = DEFAULT_MAX_TEXT_SIZE;  
30.        }  
31.  
32.        minTextSize = DEFAULT_MIN_TEXT_SIZE;  
33.    };  
34.  
35.     
36.    privatevoidrefitText(String text, inttextWidth) {  
37.        if(textWidth > 0) {  
38.            intavailableWidth = textWidth - this.getPaddingLeft()  
39.                    - this.getPaddingRight();  
40.            floattrySize = maxTextSize;  
41.            testPaint.setTextSize(trySize);  
42.            while((trySize > minTextSize)  
43.                    && (testPaint.measureText(text) > availableWidth)) {  
44.                trySize -= 1;  
45.                if(trySize <= minTextSize) {  
46.                    trySize = minTextSize;  
47.                    break;  
48.                }  
49.                testPaint.setTextSize(trySize);  
50.            }  
51.            this.setTextSize(trySize);  
52.        }  
53.    };  
54.  
55.    @Override 
56.    protectedvoidonTextChanged(CharSequence text, intstart, intbefore,  
57.            intafter) {  
58.        super.onTextChanged(text, start, before, after);  
59.        refitText(text.toString(), this.getWidth());  
60.    }  
61.  
62.    @Override 
63.    protectedvoidonSizeChanged(intw, inth, intoldw, intoldh) {  
64.        if(w != oldw) {  
65.            refitText(this.getText().toString(), w);  
66.        }  
67.    }  
68. }



拖动一个角增大textView面积 


 

自动调整TextView字体大小以适应文…_android


   
 
  
1. publicclassEditTextClass extendsActivity implementsOnTouchListener {  
2.  
3.    privateEditText txt;  
4.  
5.    @Override 
6.    publicvoidonCreate(Bundle savedInstanceState) {  
7.        super.onCreate(savedInstanceState);  
8.        setContentView(R.layout.main);  
9.        txt = (EditText) findViewById(YourEditTextId);  
10.        txt.setOnTouchListener(this);  
11.    }  
12.  
13.  
14.    @Override 
15.    publicbooleanonTouch(View v, MotionEvent event) {  
16.       if(event.getX() >= txt.getWidth() - 5&& event.getX() <= txt.getWidth()  
17.            event.getY() >= txt.getHeight() - 5&& event.getY() <= txt.getHeight()) {  
18.           txt.setWidth(event.getX());   
19.           txt.setHeight(event.getY());  
20.       }  
21.       returntrue;  
22.    }  
23. }


ImageView伸缩动画效果 


http://edison-cool911.iteye.com/blog/870339