Récemment, je voulais faire quelque chose d'Artsy avec mon nouveau projet, comme le titre le suggère, ajoutez une image d'arrière-plan en tant que fond de texte, plutôt que la couleur constante typique tout autour. Plus précisément, j'ai une image de gradient pour ce texte. P>
quelque chose comme ça p>
En règle générale, je m'attendrais à une solution de type de fichier de ressource digue XML, mais une solution simple est grandement appréciée p>
Merci pour toutes les solutions de shader, mais pour le souci de question, seules les réponses qui fournissent une solution concernant les arrière-plans d'image seront acceptées / données à une prime p>
5 Réponses :
Vous pouvez appliquer un bitmapshader code> à la peinture code> textview code>. myTextView.getPaint().setShader(new BitmapShader(myBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
shader strong> est la base de classe pour des objets qui renvoient des allures horizontales de couleurs lors du dessin. Une sous-classe de Bitmap bitmapObj = BitmapFactory.decodeResource(getResources(),R.drawable.your_image);
Shader shaderObj = new BitmapShader(bitmapObj,Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
textViewObj.getPaint().setShader(shaderObj);
textViewObj.setText("hello");
Vous pouvez utiliser Il existe deux constructeurs pour YourTextview.getpaint (). SetShader (nouveau lineargradient (...)); > linéargradient code>: P > /** Create a shader that draws a linear gradient along a line.
@param x0 The x-coordinate for the start of the gradient line
@param y0 The y-coordinate for the start of the gradient line
@param x1 The x-coordinate for the end of the gradient line
@param y1 The y-coordinate for the end of the gradient line
@param color0 The color at the start of the gradient line.
@param color1 The color at the end of the gradient line.
@param tile The Shader tiling mode
*/
public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, TileMode tile)
créer gradient.xml dans un dossier digue. Vous pouvez définir l'angle et le démarrage et la fin de la couleur. Définissez ceci draigable comme arrière-plan
au lieu de donner une charge sur le GPU / système en utilisant des shaders et des produits suggérées par des réponses ci-dessus, vous recommanderait d'utiliser la mise en page relative.
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/your_imageview_id"
android:layout_width="fill_parent"
android:layout_height="As_you_want_dp"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/your_textview_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Je n'ai pas essayé, mais Chiu-ki chan a cet exemple de texte de gradient .
Fonctionne assez bien pour un gradient linéaire, merci. Va certainement envisager d'utiliser cela.
Pouvez-vous spécifier ce que vous entendez par "arrière-plans d'image"? Comment est-ce différent d'un bitmap?
File.JPEG >> Fond de l'image