精华内容
下载资源
问答
  • android 垂直缩放动画效果
  • 读取本地文本 通过滑屏改变字体的大小 很好用 适合放大字体类似项目参考
  • 1、首先实现一个ZoomListenter类 package ... import android.util.FloatMath; import android.view.MotionEvent;...import android.view.View;...import android.view.View.OnTouchListener...

    1、首先实现一个ZoomListenter类

    package com.example.mpcc.mqttandroid.Zoom;
    
    
    import android.util.FloatMath;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.TextView;
    
    public class ZoomListenter implements OnTouchListener {
    
        private int mode = 0;
        float oldDist;
        float textSize = 0;
        TextView textView = null;
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            textView = (TextView) v;
            if (textSize == 0) {
                textSize = textView.getTextSize();
            }
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN:
                    mode = 1;
                    break;
                case MotionEvent.ACTION_UP:
                    mode = 0;
                    break;
                case MotionEvent.ACTION_POINTER_UP:
                    mode -= 1;
                    break;
                case MotionEvent.ACTION_POINTER_DOWN:
                    oldDist = spacing(event);
                    mode += 1;
                    break;
    
                case MotionEvent.ACTION_MOVE:
                    if (mode >= 2) {
                        float newDist = spacing(event);
                        if (newDist > oldDist + 1) {
                            zoom(newDist / oldDist);
                            oldDist = newDist;
                        }
                        if (newDist < oldDist - 1) {
                            zoom(newDist / oldDist);
                            oldDist = newDist;
                        }
                    }
                    break;
            }
            return true;
        }
    
        private void zoom(float f) {
            textView.setTextSize(textSize *= f);
        }
    
        private float spacing(MotionEvent event) {
            float x = event.getX(0) - event.getX(1);
            float y = event.getY(0) - event.getY(1);
            return (float)Math.sqrt(x * x + y * y);
        }
    
    }
    

    2、调用

            TextView shouye = (TextView) system_introduction.findViewById(R.id.shouye);
            shouye.setOnTouchListener(new ZoomListenter());

     

    展开全文
  • Android 设置app字体大小(按倍数缩放)-app也可以实现统一管理字体大小(其实就是按字体大小的倍数设置),实现很简单
  • Android自动缩放字体TextView

    千次阅读 2018-08-25 16:37:42
    自动缩放字体TextView算是比较简单的自定义TextView了,主要原理就是比较当前view宽度与字体宽度,来实现对字体大小的控制 思路: 重写 TextView的onDraw 1.初始化 paint // 初始化paint TextPaint paint = ...

    自动缩放字体TextView算是比较简单的自定义TextView了,主要原理就是比较当前view宽度与字体宽度,来实现对字体大小的控制

    思路:

    重写 TextView的onDraw

    1.初始化 paint

    // 初始化paint   
    TextPaint paint = getPaint();
    if (defaultTextSize == 0.0f) {
         defaultTextSize = getTextSize();
    }
    float textSize = defaultTextSize;
    paint.setTextSize(textSize);

    2.计算实际TextView显示宽度

    float textViewWidth = maxWidth - getPaddingLeft() - getPaddingRight();//不包含左右padding的空间宽度

    3.获得当前内容的实际显示宽度

    String text = getText().toString();
    float textWidth = paint.measureText(text);

    4.判断当前内容实际显示宽度是否大于TextView实际显示宽度,如果大于,减小size,并重新计算当前内容宽度。

    注:这里用了个土方法,当两个宽度十分接近的时候,就放慢减小的节奏,使它可以得到更为准确的数值。但其实还是存在误差

                while (textWidth > textViewWidth) {
                    if (textWidth - textViewWidth < 50) {
                        textSize -= 0.01;
                    } else {
                        textSize -= 0.1;
                    }
                    paint.setTextSize(textSize);
                    textWidth = paint.measureText(text);
                }

    完整代码

    
        @Override
        protected void onDraw(Canvas canvas) {
            TextPaint paint = getPaint();
            if (defaultTextSize == 0.0f) {
                defaultTextSize = getTextSize();
            }
            float textSize = defaultTextSize;
            paint.setTextSize(textSize);
            if (isAutoZoom) {
                if (maxWidth == 0)
                    maxWidth = getWidth();
                float textViewWidth = maxWidth - getPaddingLeft() - getPaddingRight();//不包含左右padding的空间宽度
                String text = getText().toString();
                float textWidth = paint.measureText(text);
                while (textWidth > textViewWidth) {
                    if (textWidth - textViewWidth < 50) {
                        textSize -= 0.01;
                    } else {
                        textSize -= 0.1;
                    }
                    paint.setTextSize(textSize);
                    textWidth = paint.measureText(text);
                }
            }
            super.onDraw(canvas);
        }

     

    展开全文
  • Android-禁用系统字体缩放

    千次阅读 2019-10-12 10:20:32
    设计师辛辛苦苦做出设计稿,开发人员辛辛苦苦把UI调好了,但是在Android用户修改系统的默认字体大小,原先的设计很容易失效,变得非常难看,考虑你的用户人群,又不想因为用户变更默认字体大小导致app的样式走样,...

    设计师辛辛苦苦做出设计稿,开发人员辛辛苦苦把UI调好了,但是在Android用户修改系统的默认字体大小,原先的设计很容易失效,变得非常难看,考虑你的用户人群,又不想因为用户变更默认字体大小导致app的样式走样,我们可以这么做:

    1.字体使用dp/dip代替sp

    dp/dip(device independent pixels):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px。不同设备有不同的显示效果,这个和设备硬件有关。
    sp(Scaled Pixels):主要用于字体显示,与刻度无关的一种像素,与dp类似,但是可以根据用户的字体大小首选项进行缩放。

    查看TextView的源码可以发现:

    /**
    * Set the default text size to the given value, interpreted as "scaled
    * pixel" units.  This size is adjusted based on the current density and
    * user font size preference.
    *
    * @param size The scaled pixel size.
    *
    * @attr ref android.R.styleable#TextView_textSize
    */
    @android.view.RemotableViewMethod
    public void setTextSize(float size) {
        setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
    }
    /**
    * Set the default text size to a given unit and value.  See {@link
    * TypedValue} for the possible dimension units.
    *
    * @param unit The desired dimension unit.
    * @param size The desired size in the given units.
    *
    * @attr ref android.R.styleable#TextView_textSize
    */
    public void setTextSize(int unit, float size) {
        Context c = getContext();
        Resources r;
        if (c == null)
            r = Resources.getSystem();
        else
            r = c.getResources();
        setRawTextSize(TypedValue.applyDimension(
        unit, size, r.getDisplayMetrics()));
    }
    private void setRawTextSize(float size) {
        if (size != mTextPaint.getTextSize()) {
            mTextPaint.setTextSize(size);
            if (mLayout != null) {
                nullLayouts();
                requestLayout();
                invalidate();
            }
        }
    }
    

    TypedValue.applyDimension()源码如下:

    public static float applyDimension(int unit, float value,
        DisplayMetrics metrics)
    {
        switch (unit) {
            case COMPLEX_UNIT_PX:
                return value;
            case COMPLEX_UNIT_DIP:
                return value * metrics.density;
            case COMPLEX_UNIT_SP:
                return value * metrics.scaledDensity;
            case COMPLEX_UNIT_PT:
                return value * metrics.xdpi * (1.0f/72);
            case COMPLEX_UNIT_IN:
                return value * metrics.xdpi;
            case COMPLEX_UNIT_MM:
                return value * metrics.xdpi * (1.0f/25.4f);
            }
        return 0;
    }
    

    dp与sp的换算差别只在于metrics.density和metrics.scaledDensity,

    /**
    * A scaling factor for fonts displayed on the display.  This is the same
    * as {@link #density}, except that it may be adjusted in smaller
    * increments at runtime based on a user preference for the font size.
    */
    public float scaledDensity;
    

    因此,sp和dp的区别是乘以一个scale。

    2.通过重写系统方法禁用

    在Application重写以下方法即可

    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (newConfig.fontScale != 1)//非默认值
            getResources();
        super.onConfigurationChanged(newConfig);
    }
    @Override
    public Resources getResources() {
        Resources res = super.getResources();
        if (res.getConfiguration().fontScale != 1) {//非默认值
            Configuration newConfig = new Configuration();
            newConfig.setToDefaults();//设置默认
            res.updateConfiguration(newConfig, res.getDisplayMetrics());
        }
        return res;
    }
    

    通过重写方法,把fontScale重置为默认值。此方式无侵入,仅对当前App有效。
    可结合 一种极低成本的Android屏幕适配方式来看

    欢迎爱学习的小伙伴加群一起进步:230274309 。 一起分享,一起进步!少划水,多晒干货!!欢迎大家!!!(进群潜水者勿加)
    展开全文
  • 本文实例讲述了android实现字体闪烁动画的方法。分享给大家供大家参考。具体如下:这里基于线程和Timer实现Android字体闪烁动画效果。?public class ActivityMain extends Activity {public void onCreate(Bundle ...

    本文实例讲述了android实现字体闪烁动画的方法。分享给大家供大家参考。具体如下:

    这里基于线程和Timer实现Android的字体闪烁动画效果。

    ?

    public class ActivityMain extends Activity {

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    spark();

    }

    private int clo = 0;

    public void spark() {

    final TextView touchScreen = (TextView) findViewById(R.id.TextView01);// 获取页面textview对象

    Timer timer = new Timer();

    TimerTask taskcc = new TimerTask(){

    public void run() {

    runOnUiThread(new Runnable() {

    public void run() {

    if (clo == 0) {

    clo = 1;

    touchScreen.setTextColor(Color.TRANSPARENT); // 透明

    } else {

    if (clo == 1) {

    clo = 2;

    touchScreen.setTextColor(Color.RED);

    } else {

    clo = 0;

    touchScreen.setTextColor(Color.GREEN);

    }

    }

    }

    });

    }

    };

    timer.schedule(taskcc, 1, 300);

    // 参数分别是delay(多长时间后执行),duration(执行间隔)

    }

    }

    希望本文所述对大家的Android程序设计有所帮助。

    展开全文
  • 当TextView中字符过多时,会动态的改变字体大小以其适应TextView的大小,不会导致换行显示或超出TextView的大小而看不见
  • Android自动缩放字体大小的TextView

    千次阅读 2018-05-15 16:53:08
    相信很多小伙伴会碰到这样的需求,有时TextView的宽度是固定的,但是内容却不固定,有时候内容的长度用正常的TextSize展示可能会超过TextView的宽度,这里我们可以通过自动缩放TextView的TextSize来实现这一需求。...
  • //自动缩放大小 public class AutoScaleTextView extends AppCompatTextView { private static final String TAG = "AutoScaleTextview"; private float preferredTextSize; private float minTextSize; private...
  • google 在Android 8.0 (API level 26) 上增加了对 TextView 字体进行设置的几个属性,利用这些新增属性可以实现TextView 的字体大小自动缩放功能,具体设置如下: <TextView android:layout_width="50dp" ...
  • 安卓Android源码——多点缩放字体DEMO.zip
  • (国内知名Android开发论坛eoe开发者社区推荐:)Android系统移植与调试——教你如何修改Android默认字体大小和设置字体大小比例关于如何修改Android默认字体及设置字体大小比例的问题,很多人在网上咨询,今天来这里...
  • Android两点缩放字体

    2013-06-05 14:22:31
    Android 两点缩放 字体 实现了字体内容自动缩放
  • Zoom Text Only插件是一款可以帮你仅缩放网页文字大小的插件,我们在浏览网页的时候碰到字体过大或者字体过小的时候都非常影响阅读体验,虽然chrome可以通过ctrl加鼠标滚轮来调节页面大小,不过是整体的调节,连图片...
  • Android 应用项目开发源码 参考和学习使用
  • 字体缩放大小demo, 用于button控件对字体大小的缩放
  • Android控制字体水平方向的缩放属性设置是android:textScaleX,即水平方向放大,备忘小知识点,此处记下。作为演示,第一行是正常的默认样式,第二行是设置了android:textScaleX的属性为2。代码:android:layout_...
  • 在h5中实现一些小标签、按钮的时候,很容易发现部分安卓机型上的字体显示有问题,总会向上偏移2px左右。这是设置padding或line-height无法修复的,与rem也无关,即使在字体大于12p...
  • ZoomTextView A custom TextView, when pinch in out gesture used, then it reizes text size. How to use ? Import the ZoomTextView.java class in your project and use it as following. ...
  • Android WebView(属性)缩放 字体大小

    千次阅读 2015-09-25 12:35:18
    WebView基本使用  WebView是View的一个子类,可以让你在activity中显示网页。  可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的...WebView xmlns:android="http://schemas.android.com/apk/r
  • 安卓Android源码——精典源码之多点缩放字体DEMO.zip
  • android 两点缩放字体

    2021-06-05 06:17:49
    android 两点缩放字体MultiTouchTestActivitypackage src.youer.text;import java.io.InputStream;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class ...
  • 仅仅安卓机禁用缩放功能 var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf('Android') &gt; -1 || u.indexOf('Linux') &gt; -1; //g var isIOS = !!u.match(/\(i...
  • 主要介绍了详解android 中文字体向上偏移解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,985
精华内容 8,394
关键字:

安卓字体缩放