zoukankan      html  css  js  c++  java
  • 会游走的TextView

    //自定义的TextView

    package com.bwie.androidtest;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.FontMetrics;
    import android.graphics.Typeface;
    import android.util.AttributeSet;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.WindowManager;
    import android.widget.TextView;
    
    public class AutoText extends TextView {
    
        private int width, height;
        private Paint paintText;
        private float posx, posy;
        private float speed = 0.0f;
        private String text = "hello haha";
        private float textWidth = 0;
        private float moveDistance = 0.0f;
        private boolean isStarting = false;
    
        public AutoText(Context context) {
            super(context);
    
        }
    
        public AutoText(Context context, AttributeSet attrs) {
            super(context, attrs);
    
        }
    
        private void initView() {
            paintText = new Paint();
            //字体大小
            paintText.setTextSize(50.0f);
            //字体颜色
            paintText.setColor(Color.BLACK);
            paintText.setTypeface(Typeface.DEFAULT_BOLD);
            paintText.setAntiAlias(true);
            text = getText().toString();
            textWidth = paintText.measureText(text);
            Log.e("msg", "textWidth= " + textWidth);
            this.speed = textWidth;
            moveDistance = textWidth * 2 + width;
        }
    
        public void initDisplayMetrics(WindowManager windowManager) {
            /* 取得屏幕分辨率大小 */
            DisplayMetrics dm = new DisplayMetrics();
            windowManager.getDefaultDisplay().getMetrics(dm);
            this.width = dm.widthPixels;
            this.height = dm.heightPixels;
    
            initView();
            this.posx = width + textWidth;
            FontMetrics fm = paintText.getFontMetrics();
            float baseline = fm.descent - fm.ascent;
            //字体显示高度
            this.posy = height / 2 - baseline;
        }
    
        public void startScroll() {
            isStarting = true;
            //重新绘制
            invalidate();
        }
    
        public void stopScroll() {
            isStarting = false;
            invalidate();
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            // super.onDraw(canvas);
            canvas.drawText(text, posx - speed, posy, paintText);
            if (!isStarting) {
                return;
            }
            speed += 2.0f;
            if (speed > moveDistance)
                speed = textWidth;
            invalidate();
        }
    
    }

    //主类

    package com.bwie.androidtest;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.text.TextUtils.TruncateAt;
    import android.view.Menu;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
        String str11 = "促进青年教师全面发展,
    引导广大高校青年教师为实现中华民族伟大复兴的中国梦贡献力" + "
    "
                + "促进青年教师全面发展,
    引导广大高校青年教师为实现中华民族伟大复兴的中国梦贡献力" + "
    "
                + "  djsdnh   kshdfjks     
    
    	 ";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            scroll3();
        }
    
        void scroll3() {
            AutoText auto = (AutoText) findViewById(R.id.autoTxt);
            auto.setText(str11);
            //传递屏幕宽度
            auto.initDisplayMetrics(getWindowManager());
            //开始
            auto.startScroll();
        }
    
    }

    //布局

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <com.bwie.androidtest.AutoText   
            android:id="@+id/autoTxt"    
            android:layout_width="match_parent"    
            android:layout_height="wrap_content"    
            android:background="#ffffff"    
            android:textColor="#00ff00"    
            android:textSize="35sp" />  
    
    
    </RelativeLayout>
  • 相关阅读:
    Balance的数学思想构造辅助函数
    1663. Smallest String With A Given Numeric Value (M)
    1680. Concatenation of Consecutive Binary Numbers (M)
    1631. Path With Minimum Effort (M)
    1437. Check If All 1's Are at Least Length K Places Away (E)
    1329. Sort the Matrix Diagonally (M)
    1657. Determine if Two Strings Are Close (M)
    1673. Find the Most Competitive Subsequence (M)
    1641. Count Sorted Vowel Strings (M)
    1679. Max Number of K-Sum Pairs (M)
  • 原文地址:https://www.cnblogs.com/1995yu/p/5498465.html
Copyright © 2011-2022 走看看