1. 如何动态地画一条虚线在android中使用OpenGL ES 2.0编程
动态绘制虚线,可以参考如下内容:
、被称为点画的影响。不幸的是,点画已经从OpenGL的删除,但幸运的是,有几种方法仍然得到的效果。我们必须充分利用的OpenGL的着色语言的这项任务。 顶点着色器:uniform mat4 u_modelViewProjectionMatrix;
uniform mat4 mv;
attribute vec4 a_position;
attribute vec4 a_color;
varying vec4 v_color;
varying vec4 position;
void main() {
gl_Position = u_modelViewProjectionMatrix * a_position;
position = mv * a_position;
v_color = a_color;
}
着色器:precision mediump float;
uniform vec2 sourcePoint;
varying vec4 v_color;
varying vec4 position;
void main() {
if (cos(0.1*abs(distance(sourcePoint.xy, position.xy))) + 0.5 > 0.0) {
gl_FragColor = vec4(0,0,0,0);
} else {
gl_FragColor = v_color;
}
}
我没有在这里找到本教程中,我测试了,这里是我的结果:
正如罗斯托夫在这个线程解释,这里最大的部分是sourcePoint。
的关键 CodeGo.net,整个事情是sourcePoint被传递的
该行的起源。
如果你不喜欢这种方式也存在textures图案的效果。有与α虚线效果textures,并将其应用到您的线路。
2.
我找到了一个更好的解决方案。它的水平和垂直线。
#define DOT_VERTEX_CODE \
"attribute vec4 a_Position;" \
"uniform mat4 projectionMatrix;" \
"varying vec2 v_xy;" \
"void main() {gl_PointSize = 1.0; gl_Position = a_Position*projectionMatrix; v_xy = a_Position.xy;}"
#define DOT_FRAGMENT_CODE \
"precision mediump float;" \
"varying vec2 v_xy;" \
"uniform float isVert;" \
"uniform vec4 color1;" \
"uniform vec4 color2;" \
"void main() {gl_FragColor = mod(isVert > 0.0 ? v_xy.y : v_xy.x, 2.0) >= 1.0 ? color1 : color2;}"
2. android用shape画虚线,怎么也不显示
android中 shape的用法如下:
注意这个padding属性,如果你设置了边框,建议你给控件设置一下padding
内边距,这要才能显示出来
<?xmlversion="1.0"encoding="utf-8"?>
<shapexmlns:android="http://schemas.android.com/apk/res/android">
<!--圆角-->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!--设置圆角半径-->
<!--渐变-->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>
<!--间隔-->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!--各方向的间隔-->
<!--大小-->
<size
android:width="50dp"
android:height="50dp"/><!--宽度和高度-->
<!--填充-->
<solid
android:color="@android:color/white"/><!--填充的颜色-->
<!--描边-->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>
3. android用shape画虚线,怎么也不显示
一直以为android的shape能画直线,虚线,矩形,圆形等,画直线也就算了,用一个view设一下高度和颜色,就可以出来一条直线了。所以说这个对我来说经常不用,圆形是可以,看看我应用里的消息提示框都是这样生成的,好了,这个不存在问题,今天想要做是一条虚线,什么也不说了,直接上虚线的代码:<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<!-- 显示一条虚线,破折线的宽度为dashWith,破折线之间的空隙的宽度为dashGap,当dashGap=0dp时,为实线 -->
<stroke android:width="1dp" android:color="#D5D5D5"
android:dashWidth="2dp" android:dashGap="3dp" />
<!-- 虚线的高度 -->
<size android:height="2dp" />
</shape>
解释的好完美,真要不是不自己试,估计一辈子都会相信这是真的了,结果是放到手机里,从来没有出现过什么线条,对于像我一样追求完美的人来说,自然不会放过这一个细节,在网上找了大半天,有的小伙伴们也遇到了,并且也解决了,可是把他们的方法拿过来后,都一个也不好使,实际情况是还是不能显示,总结一下小伙伴们的解决方法吧
1.从android3.0开始,安卓关闭了硬件加速功能,所以就不能显示了,所以就是在 AndroidManifest.xml,或者是在activity中把硬件加速的功能关掉就可以了android:hardwareAccelerated="false"或者是view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
2.一个小伙伴的翻译,说什么height要大于dashWidth才能显示。
我都按他们的方法试了,根本都不行,
所以要想真正的实现还是老老实实的自己去画一条虚线吧。
4. Android 文字左边虚线
方式:
###第一种是通过写shape布局文件来实现给TextView设置background时引用此布局文件即可实现效果,shape布局文件代码如下:
stroke标签下为虚线框的主要设置,dashGap表示中间隔开一段距离,即定义了样式为虚线,效果图如下:
###第二种方式是通过自定义View使之继承View,然后在onDraw方法中将虚线和文字用Paint画笔画出。
主要代码如下:
public class DashedSurroundTextView extends View {
/
mTextColor 文字颜色 mBorderColor 虚线边界颜色 mBorderWidth虚线边界宽度
mTextSizen 文字大小 mText 文字内容
/
private int mTextColor;
private int mBorderColor;
private float mBorderWidth;
private float mTextSize;
private String mText;
private float start_x = 0;
private float start_y = 0;
private float padding = 5;
private float baseLineLong = 10;
private float radiusX = 20;
private float radiusY = 20;
...
public DashedSurroundTextView(Context context, AttributeSet attrs) {
super(context, attrs);
//获取自定义参数
TypedArray typedArray = context.obtainStyledAttributes(attrs,
R.styleable.DashedSurroundTextView);
//虚线border颜色
mBorderColor = typedArray.getColor(R.styleable.DashedSurroundTextView_border_color, Color.argb(0, 0, 0, 0));
//虚线border宽度
mBorderWidth = typedArray.getDimension(R.styleable.DashedSurroundTextView_border_width, 0);
//字体颜色
mTextColor = typedArray.getColor(R.styleable.DashedSurroundTextView_textColor, Color.argb(0, 0, 0, 0));
//字体大小
mTextSize = typedArray.getDimension(R.styleable.DashedSurroundTextView_textSize, 0);
//显示文字
mText = typedArray.getString(R.styleable.DashedSurroundTextView_text);
}
5. Android如何绘制虚线
用shape绘制虚线
真机调试时可能会出现虚线变实线的现象
在manifest文件对应的activity节点中设置
android:hardwareAccelerated="false"
即可
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="#d3d3d3" android:dashWidth="10dp" android:dashGap="10dp" /></shape>
width:线段的高度
color:线段的颜色
dashWidth:线段宽度
dashGap:线段之间间隔宽度
6. android用shape画虚线,怎么也不显示
Canvas类用来实现绘制.通过组合使用Canvas类的成员函数可以实现随心随欲地绘制图片的任何部分.
Canvas.clipRect:设置显示区域
Canvas.drawBitmap:绘制
例子:
Bitmap b=BitmapFactory.decodeStream("图片编号", null);//读取图片
Canvas c = null;//实例Canvas
c.save();//记录原来的canvas状态
c.clipRect(100,100,200,300);//显示从(100,100)到(200,300)的区域(单位:象素)
c.drawBitmap(b,10,0,null); //将阉割过的图片画到(10,0)位置
c.restore();//恢复canvas状态
7. android用shape画虚线,怎么也不显示
您好,很高兴能帮助您
Canvas类用来实现绘制.通过组合使用Canvas类的成员函数可以实现随心随欲地绘制图片的任何部分.
Canvas.clipRect:设置显示区域
Canvas.drawBitmap:绘制
例子:
Bitmap b=BitmapFactory.decodeStream("图片编号", null);//读取图片
...
Canvas c = null;//实例Canvas
c.save();//记录原来的canvas状态
c.clipRect(100,100,200,300);//显示从(100,100)到(200,300)的区域(单位:象素)
c.drawBitmap(b,10,0,null); //将阉割过的图片画到(10,0)位置
c.restore();//恢复canvas状态
你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,
8. Android中绘制虚线
下面对属性进行一下介绍:
9. android opengl怎么画虚线
在OpenGL中画线是可以完全的控制,比如画虚线,用函数glLineStipple就可以控制画线的模式:
函数glLineStipple有两个参数,第一个是重复的次数,第二个是用一个16-bit的数来控制,0表示不画,1表示画;比如0000111100001111=0x0F0F表示“ — —”这个模式。
glLineWidth (1.0);
glLineStipple (1, 0x0F0F);
glBegin(GL_LINES);
glVertex2f (0.0,0.0); glVertex2f (100.0,100.0);
glEnd();
画出来的就是虚线。