Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MyTextView extends TextView {
- private boolean isBlack;
- private float letterSpacing;
- private CharSequence originalText;
- private boolean isBeignHighlighted;
- public MyTextView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- Log.w("Konstruktor 3 parametra", "mytextview");
- init(attrs);
- isBeignHighlighted = false;
- }
- public MyTextView(Context context, AttributeSet attrs) {
- super(context, attrs);
- Log.w("Konstruktor 2 parametra", "mytextview");
- if (isInEditMode()) return;
- init(attrs);
- isBeignHighlighted = false;
- }
- public MyTextView(Context context) {
- super(context);
- Log.w("Konstruktor 1 parametra", "mytextview");
- init(null);
- isBeignHighlighted = false;
- }
- private void init(AttributeSet attrs) {
- Log.w("Usao u konstruktor textView init metoda", "myTextview");
- if(attrs == null) Log.w("Atributi su null", "myTextView");
- if (attrs!=null) {
- TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MyTextView);
- String fontName = "badabb.ttf";
- String shade = a.getString(R.styleable.MyTextView_shade);
- if(shade == null) Log.w("Shade je null", "shade");
- // Log.w("ime fonta", fontName);
- if (fontName!=null) {
- if(!(shade == null) && shade.equals("black")) isBlack = true;
- else isBlack = false;
- if(getContext().getAssets() == null) Log.w("Greska", "getContext().getAssets() je null");
- else Log.w("Asseti nisu null", "nisu null");
- Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName);
- if(myTypeface == null) Log.w("typeface je null", "font");
- else Log.w("typeface je", fontName);
- setTypeface(myTypeface);
- setPaintFlags(getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
- }
- a.recycle();
- }
- }
- public void setHighlightStatus(boolean status){
- isBeignHighlighted = status;
- }
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom){
- super.onLayout(changed, left, top, right, bottom);
- if(changed)
- {
- if(!isBeignHighlighted){
- if(!this.isBlack){
- getPaint().setShader(new LinearGradient(0, 0, 0, getHeight(), 0xfff6ec32, 0xffcdc72c, Shader.TileMode.CLAMP));
- }
- else getPaint().setColor(Color.BLACK);
- }
- }
- }
- @Override
- protected void onDraw(Canvas canvas) {
- // draw the shadow
- getPaint().setShadowLayer(0.2f, 4, 4, R.color.black);
- getPaint().setShader(null);
- super.onDraw(canvas);
- // draw the gradient filled text
- getPaint().clearShadowLayer();
- getPaint().setShader(new LinearGradient(0, getHeight(), 0, 0, 0xfff6ec32, 0xffcdc72c, TileMode.CLAMP)); // or whatever gradient/shader you use
- super.onDraw(canvas);
- }
- //Metode za individualni razmak izmedju slova
- public float getLetterSpacing() {
- return letterSpacing;
- }
- public void setLetterSpacing(float letterSpacing) {
- this.letterSpacing = letterSpacing;
- applyLetterSpacing();
- }
- @Override
- public void setText(CharSequence text, BufferType type) {
- originalText = text;
- applyLetterSpacing();
- }
- @Override
- public CharSequence getText() {
- return originalText;
- }
- private void applyLetterSpacing() {
- StringBuilder builder = new StringBuilder();
- for(int i = 0; i < originalText.length(); i++) {
- builder.append(originalText.charAt(i));
- if(i+1 < originalText.length()) {
- builder.append("\u00A0");
- }
- }
- SpannableString finalText = new SpannableString(builder.toString());
- if(builder.toString().length() > 1) {
- for(int i = 1; i < builder.toString().length(); i+=2) {
- finalText.setSpan(new ScaleXSpan((letterSpacing+1)/10), i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- }
- }
- super.setText(finalText, BufferType.SPANNABLE);
- }
- public class LetterSpacing {
- public final static float NORMAL = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement