方式:
創新互聯是一家專業提供潁州企業網站建設,專注與成都網站制作、網站建設、H5開發、小程序制作等業務。10年已為潁州眾多企業、政府機構等服務。創新互聯專業網站建設公司優惠進行中。
###第一種是通過寫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);
}
動態繪制虛線,可以參考如下內容:
、被稱為點畫的影響。不幸的是,點畫已經從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;}"
android開發中虛線的用法:
一、自己創建模式,一個點一個點的繪制。
二、用Android提供的 DashPathEffect 類來創建模式繪制。
下面我要演示的就是第二種方法,用Android提供給我的API來繪制。
由于是開發項目的一個小塊,下面只能給出部分截圖:
下面看一下核心繪圖代碼:
public void draw(Canvas mcanvas) {
GameLog.log(Tag, "draw");
Paint mLinePaint = new Paint();
mLinePaint.setColor(Color.WHITE);
mLinePaint.setStyle(Paint.Style.STROKE);
//繪制模式
PathEffect effect = new DashPathEffect(new float[] { 1, 2, 4, 8}, 1);
mLinePaint.setAntiAlias(true);
mLinePaint.setPathEffect(effect);
mLinePaint.setStrokeWidth(4);
if (GameManager.getState() == GameManager.GameStart) {
GameLog.log(Tag, "GameStart");
float[] oldPts = getPts(mOldPoints);
mCanvas.drawLines(oldPts, mLinePaint);
prepareLinesData();
float[] newPts = getPts(mNewPoints);
mCanvas.drawLines(newPts, mLinePaint);
}
}
簡單介紹下 PathEffect類:
PathEffect是用來控制繪制輪廓(線條)的方式。
PathEffect對于繪制Path基本圖形特別有用,但是它們也可以應用到任何Paint中從而影響線條繪制的方式。
使用PathEffect,可以改變一個形狀的邊角的外觀并且控制輪廓的外表。
Android包含了多個PathEffect,包括:
CornerPathEffect 可以使用圓角來代替尖銳的角從而對基本圖形的形狀尖銳的邊角進行平滑。
DashPathEffect 可以使用DashPathEffect來創建一個虛線的輪廓(短橫線/小圓點),而不是使用實線。你還可以指定任意的虛/實線段的重復模式。
DiscretePathEffect 與DashPathEffect相似,但是添加了隨機性。當繪制它的時候,需要指定每一段的長度和與原始路徑的偏離度。
PathDashPathEffect 這種效果可以定義一個新的形狀(路徑)并將其用作原始路徑的輪廓標記。
下面的效果可以在一個Paint中組合使用多個Path Effect。
SumPathEffect 順序地在一條路徑中添加兩種效果,這樣每一種效果都可以應用到原始路徑中,而且兩種結果可以結合起來。
ComposePathEffect 將兩種效果組合起來應用,先使用第一種效果,然后在這種效果的基礎上應用第二種效果。
對象形狀的PathEffect的改變會影響到形狀的區域。這就能夠保證應用到相同形狀的填充效果將會繪制到新的邊界中。
使用paint來畫。
Paint paint = new Paint ( ) ;
paint.setColor ( Color.BLACK ) ;
//設置畫直線格式
paint.setStyle ( Paint.Style.STROKE ) ;
//設置虛線效果
paint.setPathEffect ( new DashPathEffect ( new float [ ] { 3, 2 }, 0 ) ) ;
最后這句是設置虛線效果,里邊的float數組的意思是:先畫長度為3的實線,再間隔長度為2的空白,之后一直重復這個單元。這個數組的長度只要大于等于2就行,你可以設置多個數值,產生不同效果,最后這個0指的是與起始位置的偏移量。
網站名稱:android虛線,手機出現虛線
網站鏈接:http://vcdvsql.cn/article40/dsdesho.html
成都網站建設公司_創新互聯,為您提供手機網站建設、、定制網站、服務器托管、面包屑導航、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯