Android自定义可以在文字上方显示备注的View

来源:互联网 发布:淘宝的会员名怎么改 编辑:程序博客网 时间:2024/04/29 17:49

闲着没事干写写这个,算坐标要算晕了,恐怕半个月后自己都要看不懂了

 

 

 

package com.example.texttest;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Point;import android.graphics.Rect;public class KString{    private String[] mKString;    private Paint mainPaint;    private Paint subPaint;    public int mainH,subH,mainW,subW,allW,allH;    private Point mainStart,subStart;    public KString(String main,String sub){        mKString = new String[2];                subPaint=new Paint();        mainPaint=new Paint();        subPaint.setAntiAlias(true);        mainPaint.setAntiAlias(true);        subPaint.setColor(Color.BLACK);        mainPaint.setColor(Color.BLACK);        mainPaint.setTextSize(20);        subPaint.setTextSize(13);                setText(main, sub);                    }        public void setText(String main,String sub){        mKString[0]=main;        mKString[1]=sub;                Rect mainR=new Rect();        mainPaint.getTextBounds(mKString[0], 0, mKString[0].length(), mainR);        Rect subR=new Rect();        subPaint.getTextBounds(mKString[1], 0, mKString[1].length(), subR);        mainH=mainR.bottom-mainR.top+1;        mainW=mainR.right-mainR.left;        subH=subR.bottom-subR.top+1;        subW=subR.right-subR.left;        mainStart=new Point(0, 0);        subStart=new Point(0, 0);                allW=Math.max(mainW, subW);        allH=mainH+subH;    }        public void draw(Canvas c){        c.drawText(mKString[0], mainStart.x, mainStart.y, mainPaint);        c.drawText(mKString[1], subStart.x, subStart.y, subPaint);                }        public void setStartPoint(int x,int y,int mainH,int subH){                y=y+(mainH+subH)-2;            mainStart.x=x+(allW-mainW)/2;;            mainStart.y=y;            subStart.y=y-mainH;            subStart.x=x+(allW-subW)/2;                        }        public int getHeight(){        return allH;    }        public int getWidth(){        return allW;    }                    }
package com.example.texttest;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.view.View;public class MyText extends View {        List<KString> mData;    private int mainH=0,subH=0,charPadding=3,allW;        public MyText(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub        mData=new ArrayList<KString>();                    }        public MyText(Context context){        super(context);    }        public void setKString(String main,String sub){        KString ks=new KString(main, sub);        mData.add(ks);        if(ks.mainH>mainH)            mainH=ks.mainH;        if(ks.subH>subH)            subH=ks.subH;    }        public void setKString(String s){        String[] sa=s.split(";");        for(int i=0;i<sa.length;i+=2){            setKString(sa[i], sa[i+1]);        }    }    @Override    protected void onDraw(Canvas canvas) {        // TODO Auto-generated method stub        allW=0;        for(KString item:mData){            item.setStartPoint(allW, 0, mainH, subH);            allW+=item.allW+charPadding;            item.draw(canvas);        }                    }        @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        // TODO Auto-generated method stub        setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), mainH+subH);    }                }
package com.example.texttest;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                ((MyText)findViewById(R.id.myText1)).setKString("あんな; ;空;そら;で; ;ミサイル;misairu;が; ;飛;と;ぶのなら; ");        ((MyText)findViewById(R.id.myText2)).setKString("そんな; ;物;もの;で; ;幸;しあわ;せを; ;乞;こ;うのなら; ");        ((MyText)findViewById(R.id.myText3)).setKString("優;やさ;しい; ;人;ひと;にならなくちゃ; ");        ((MyText)findViewById(R.id.myText4)).setKString("僕;ぼく;は; ;僕;ぼく;を; ;肯定;こうてい;していけるかな; ");            }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <com.example.texttest.MyText        android:id="@+id/myText1"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <com.example.texttest.MyText        android:id="@+id/myText2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/myText1"        android:layout_marginTop="10dp" />    <com.example.texttest.MyText        android:id="@+id/myText3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/myText2"        android:layout_marginTop="10dp" />    <com.example.texttest.MyText        android:id="@+id/myText4"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/myText3"        android:layout_marginTop="10dp" /></RelativeLayout>

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击