我有一个六边形jpg文件,如下所示:
我想把我的一些选择放在它的中心。所以最终输出看起来像这样:
我希望数字始终直接居中。有没有办法用android xml中的shape标签来做到这一点?我还需要指定六边形的宽度和高度。我不认为形状标签会有帮助,因为我已经定义了形状。你认为我最好的选择是使用一个按钮并在上面写上数字,同时保持六边形作为背景吗?
答案 0 :(得分:1)
我可以想到你可以使用的两种主要方式。就像你说的那样,你可以使用Button
/ TextView
并将背景设置为六边形资源。正如你所说,这需要每次都充实这种观点。另一种方法是使用Canvas
并直接在图像上绘制数字,然后将图像放入ImageView
或其他类似视图。要在图像上绘图:
int fontSize = 200; //set your font size
Bitmap baseImage = BitmapFactory.decodeResource(this.getResources(), R.drawable.hexagon); //load the hexagon image
Bitmap image = baseImage.copy(Bitmap.Config.ARGB_8888, true); //create mutable bitmap for canvas. see: http://stackoverflow.com/a/13119762/1896516
//the "paint" to use when drawing the text
Paint paint = new Paint(); //see here for all paint options: https://developer.android.com/reference/android/graphics/Paint.html
paint.setTextSize(fontSize); //sets your desired font size
paint.setColor(Color.BLACK); //set the desired color of the text
paint.setTextAlign(Paint.Align.CENTER); //set the alignment of the text
Canvas canvas = new Canvas(image); //create a canvas from the bitmap
canvas.drawText("#", image.getWidth()/2, image.getHeight()/2 + fontSize/4, paint); //draw the number onto the hexagon
ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(image);
根据图像是否有边框等,您可能需要使用文字定位。另外,请注意我还没有真正测试过这两个对比性能,所以我不确定哪一个最终会成为最有效的方式。也就是说,第一种方式可能更容易,因为它将自己处理定位。希望这有帮助!