2012-05-01 2 views
4

Я пытаюсь создать 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() и снова нарисовать «Представления», но без успеха.

ответ

2

Звучит как ошибка в инструментаризме пользовательского интерфейса OpenGL рендеринга. На какой версии ICS это происходит точно? У вас есть APK, который я мог бы использовать, чтобы воспроизвести проблему и, возможно, исправить ее, если она все еще существует? В качестве обходного, вы можете использовать

yourLayout.setLayerType(View.LAYER_TYPE_SOFTWARE,yourLayout.getPaint); 

на ваших TextViews, чтобы заставить программный рендеринг.

+0

обходной способ работы, спасибо! Я получил ошибку только по моей связи в версии 4.0.4. Эмулятор работает. APK находится здесь: [link] (https://play.google.com/store/apps/details?id=org.icecuber.amazza) – Shine

Смежные вопросы