Advertisement
Guest User

Untitled

a guest
Nov 10th, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.07 KB | None | 0 0
  1. public class MyTextView extends TextView {
  2.  
  3. private boolean isBlack;
  4. private float letterSpacing;
  5. private CharSequence originalText;
  6. private boolean isBeignHighlighted;
  7.  
  8. public MyTextView(Context context, AttributeSet attrs, int defStyle) {
  9. super(context, attrs, defStyle);
  10. Log.w("Konstruktor 3 parametra", "mytextview");
  11. init(attrs);
  12. isBeignHighlighted = false;
  13. }
  14.  
  15. public MyTextView(Context context, AttributeSet attrs) {
  16. super(context, attrs);
  17. Log.w("Konstruktor 2 parametra", "mytextview");
  18. if (isInEditMode()) return;
  19. init(attrs);
  20. isBeignHighlighted = false;
  21.  
  22. }
  23.  
  24. public MyTextView(Context context) {
  25. super(context);
  26. Log.w("Konstruktor 1 parametra", "mytextview");
  27. init(null);
  28. isBeignHighlighted = false;
  29. }
  30.  
  31. private void init(AttributeSet attrs) {
  32. Log.w("Usao u konstruktor textView init metoda", "myTextview");
  33. if(attrs == null) Log.w("Atributi su null", "myTextView");
  34. if (attrs!=null) {
  35. TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MyTextView);
  36. String fontName = "badabb.ttf";
  37. String shade = a.getString(R.styleable.MyTextView_shade);
  38. if(shade == null) Log.w("Shade je null", "shade");
  39. // Log.w("ime fonta", fontName);
  40. if (fontName!=null) {
  41.  
  42. if(!(shade == null) && shade.equals("black")) isBlack = true;
  43. else isBlack = false;
  44.  
  45. if(getContext().getAssets() == null) Log.w("Greska", "getContext().getAssets() je null");
  46. else Log.w("Asseti nisu null", "nisu null");
  47. Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName);
  48. if(myTypeface == null) Log.w("typeface je null", "font");
  49. else Log.w("typeface je", fontName);
  50. setTypeface(myTypeface);
  51. setPaintFlags(getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
  52. }
  53. a.recycle();
  54. }
  55. }
  56.  
  57. public void setHighlightStatus(boolean status){
  58. isBeignHighlighted = status;
  59. }
  60.  
  61. @Override
  62. protected void onLayout(boolean changed, int left, int top, int right, int bottom){
  63. super.onLayout(changed, left, top, right, bottom);
  64. if(changed)
  65. {
  66. if(!isBeignHighlighted){
  67. if(!this.isBlack){
  68. getPaint().setShader(new LinearGradient(0, 0, 0, getHeight(), 0xfff6ec32, 0xffcdc72c, Shader.TileMode.CLAMP));
  69. }
  70. else getPaint().setColor(Color.BLACK);
  71. }
  72. }
  73. }
  74.  
  75. @Override
  76. protected void onDraw(Canvas canvas) {
  77. // draw the shadow
  78. getPaint().setShadowLayer(0.2f, 4, 4, R.color.black);
  79. getPaint().setShader(null);
  80. super.onDraw(canvas);
  81.  
  82. // draw the gradient filled text
  83. getPaint().clearShadowLayer();
  84. getPaint().setShader(new LinearGradient(0, getHeight(), 0, 0, 0xfff6ec32, 0xffcdc72c, TileMode.CLAMP)); // or whatever gradient/shader you use
  85. super.onDraw(canvas);
  86. }
  87.  
  88. //Metode za individualni razmak izmedju slova
  89. public float getLetterSpacing() {
  90. return letterSpacing;
  91. }
  92.  
  93. public void setLetterSpacing(float letterSpacing) {
  94. this.letterSpacing = letterSpacing;
  95. applyLetterSpacing();
  96. }
  97.  
  98. @Override
  99. public void setText(CharSequence text, BufferType type) {
  100. originalText = text;
  101. applyLetterSpacing();
  102. }
  103.  
  104. @Override
  105. public CharSequence getText() {
  106. return originalText;
  107. }
  108.  
  109. private void applyLetterSpacing() {
  110. StringBuilder builder = new StringBuilder();
  111. for(int i = 0; i < originalText.length(); i++) {
  112. builder.append(originalText.charAt(i));
  113. if(i+1 < originalText.length()) {
  114. builder.append("\u00A0");
  115. }
  116. }
  117. SpannableString finalText = new SpannableString(builder.toString());
  118. if(builder.toString().length() > 1) {
  119. for(int i = 1; i < builder.toString().length(); i+=2) {
  120. finalText.setSpan(new ScaleXSpan((letterSpacing+1)/10), i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  121. }
  122. }
  123. super.setText(finalText, BufferType.SPANNABLE);
  124. }
  125.  
  126. public class LetterSpacing {
  127. public final static float NORMAL = 0;
  128. }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement