Я пытаюсь создать 8bit эффект старого стиля на некоторых Android видом текста, используя следующий код:Android: испорчены TextView с помощью .setShader()
private static Shader InversetextShader = new LinearGradient(0, 0, 0, 22,
new int[] { Color.RED, Color.BLUE },
new float[] { 0, 1 }, TileMode.CLAMP);
TextView t1 = (TextView) findViewById(R.id.textView2);
t1.setText(getApplicationContext().getString(R.string.app_name_mele));
t1.getPaint().setShader(InversetextShader);
t1.setTypeface(font);
t1.setShadowLayer(4f, 2.0f, 2.0f, Color.BLACK);
код работает на Android < 3 , но это дает мне проблемы с тех пор, как я начал нацеливать ICS (API Level 14).
TextView довольно просты:
<TextView
android:id="@+id/textViewRecords1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceLarge" >
</TextView>
Это изображение показывает дефект, некоторые черные линии, которые should't быть там:
(Прости, что я не могу добавлять изображения)
http://i.stack.imgur.com/xRWOM.png
Если я закрывал отображение OFF (т.е. блокировки телефона), а затем снова, дефект уходит. Я попробовал вызвать .invalidate() и снова нарисовать «Представления», но без успеха.
обходной способ работы, спасибо! Я получил ошибку только по моей связи в версии 4.0.4. Эмулятор работает. APK находится здесь: [link] (https://play.google.com/store/apps/details?id=org.icecuber.amazza) – Shine