Intereting Posts
Android: периодически отправлять данные о местоположении в фоновом режиме (каждые 30 секунд) и запрашивать у сервера новые данные Пользовательские вкладки Chrome не меняют кнопку закрытия по умолчанию Является ли создание журналов каким-либо образом влияет на системную память? Передайте массив матов в собственный код Проблема с BroadcastReceiver (ошибка зарегистрированного приемника) HttpResponse в Android Идентификатор AdMob для Android AdMob в бета-версиях и альфа-каналах Что произойдет, если служба запущена несколько раз? Почему (ListView) findViewById возвращает null? Функция «Экономия заряда батареи» убивает мой музыкальный сервис Как реализовать RxJava-эквивалент INotifyPropertyChanged для создания модели данных Observable? ActionbarSherlock: скрыть панель действий при отображении вкладок В любом случае, чтобы избежать отказа от отказа на уровне отказа на уровне Android? Как включить информацию о трафике по определенному маршруту в Google Maps V2? Не удается найти идентификатор макета для <1% пользователей?

Текст перекрытия андроидов

Попытка привлечь автомобильные датчики в android с помощью Paint и ondraw () с использованием кода с открытым исходным кодом. Датчики работали довольно хорошо, но были проблемы с Android 4 и выше. После этого изменился объект Paint, установив setLinearText (true), из-за чего все работает. Но теперь текст в манометрах начал перекрываться, и все выглядит размытым, как показано на изображении. Введите описание изображения здесь

Ниже приведен исходный код, используемый для рисования датчиков, текстов и линий на экране. Нужна помощь для рисования текста, который не перекрывается.

private void initDrawingTools() { rimRect = new RectF(0.1f, 0.1f, 0.9f, 0.9f); // the linear gradient is a bit skewed for realism rimPaint = new Paint(); rimPaint.setFlags(Paint.ANTI_ALIAS_FLAG); rimPaint.setShader(new LinearGradient(0.40f, 0.0f, 0.60f, 1.0f, Color.rgb(0xf0, 0xf5, 0xf0), Color.rgb(0x30, 0x31, 0x30), Shader.TileMode.CLAMP)); rimCirclePaint = new Paint(); rimCirclePaint.setAntiAlias(true); rimCirclePaint.setStyle(Paint.Style.STROKE); rimCirclePaint.setColor(Color.argb(0x4f, 0x33, 0x36, 0x33)); rimCirclePaint.setStrokeWidth(0.005f); float rimSize = 0.02f; faceRect = new RectF(); faceRect.set(rimRect.left + rimSize, rimRect.top + rimSize, rimRect.right - rimSize, rimRect.bottom - rimSize); faceTexture = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.plastic); BitmapShader paperShader = new BitmapShader(faceTexture, Shader.TileMode.MIRROR, Shader.TileMode.MIRROR); Matrix paperMatrix = new Matrix(); facePaint = new Paint(); facePaint.setFilterBitmap(true); paperMatrix.setScale(1.0f / faceTexture.getWidth(), 1.0f / faceTexture.getHeight()); paperShader.setLocalMatrix(paperMatrix); facePaint.setStyle(Paint.Style.FILL); facePaint.setShader(paperShader); rimShadowPaint = new Paint(); rimShadowPaint.setShader(new RadialGradient(0.5f, 0.5f, faceRect.width() / 2.0f, new int[] { 0x00000000, 0x00000500, 0x50000500 }, new float[] { 0.96f, 0.96f, 0.99f }, Shader.TileMode.MIRROR)); rimShadowPaint.setStyle(Paint.Style.FILL); scalePaint = new Paint(); scalePaint.setStyle(Paint.Style.STROKE); scalePaint.setColor(0x9f004d0f); scalePaint.setStrokeWidth(0.005f); scalePaint.setAntiAlias(true); float pixel= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 1, getResources().getDisplayMetrics()); scalePaint.setTextSize(0.045f); //scalePaint.setTextSize(pixel); scalePaint.setTypeface(Typeface.SANS_SERIF); scalePaint.setTextScaleX(1.0f); scalePaint.setTextAlign(Paint.Align.CENTER); scalePaint.setLinearText(true); scalePaint.setFlags(Paint.LINEAR_TEXT_FLAG); float scalePosition = 0.10f; scaleRect = new RectF(); scaleRect.set(faceRect.left + scalePosition, faceRect.top + scalePosition, faceRect.right - scalePosition, faceRect.bottom - scalePosition); titlePaint = new Paint(); titlePaint.setColor(0xaf946109); titlePaint.setAntiAlias(true); titlePaint.setTypeface(Typeface.DEFAULT_BOLD); titlePaint.setTextAlign(Paint.Align.CENTER); titlePaint.setTextSize(0.05f); titlePaint.setTextScaleX(0.8f); titlePaint.setLinearText(true); titlePaint.setFlags(Paint.LINEAR_TEXT_FLAG); titlePath = new Path(); titlePath.addArc(new RectF(0.24f, 0.24f, 0.76f, 0.76f), -180.0f, -180.0f); paramPaint = new Paint(); paramPaint.setColor(0xaf946109); paramPaint.setAntiAlias(true); paramPaint.setTypeface(Typeface.DEFAULT_BOLD); paramPaint.setTextAlign(Paint.Align.CENTER); paramPaint.setTextSize(0.05f); paramPaint.setTextScaleX(0.8f); paramPaint.setLinearText(true); paramPaint.setFlags(Paint.LINEAR_TEXT_FLAG); logoPaint = new Paint(); logoPaint.setFilterBitmap(true); logo = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.logo); logoMatrix = new Matrix(); logoScale = (1.0f / logo.getWidth()) * 0.3f; logoMatrix.setScale(logoScale, logoScale); handPaint = new Paint(); handPaint.setAntiAlias(true); handPaint.setColor(0xff392f2c); handPaint.setShadowLayer(0.01f, -0.005f, -0.005f, 0x7f000000); handPaint.setStyle(Paint.Style.FILL); handPath = new Path(); handPath.moveTo(0.5f, 0.5f + 0.2f); handPath.lineTo(0.5f - 0.010f, 0.5f + 0.2f - 0.007f); handPath.lineTo(0.5f - 0.002f, 0.5f - 0.32f); handPath.lineTo(0.5f + 0.002f, 0.5f - 0.32f); handPath.lineTo(0.5f + 0.010f, 0.5f + 0.2f - 0.007f); handPath.lineTo(0.5f, 0.5f + 0.2f); handPath.addCircle(0.5f, 0.5f, 0.025f, Path.Direction.CW); handScrewPaint = new Paint(); handScrewPaint.setAntiAlias(true); handScrewPaint.setColor(0xff493f3c); handScrewPaint.setStyle(Paint.Style.FILL); backgroundPaint = new Paint(); backgroundPaint.setFilterBitmap(true); }