自定义信息提示条tooltipbar

来源:互联网 发布:免费网络骚扰电话软件 编辑:程序博客网 时间:2024/05/18 02:10

最近在公司忙的焦头烂额,做一些自己的控件,千奇百怪的,现在拿出一部分分享给大家。

信息提示条,可以用来显示一些文本信息,并通过服务器端传递的一些json串,解析过之后循环显示出来,通过每一次点击textview以动画的形式跳到另一个textview上并显示出来,循环往复。

不多说了,直接上代码,有注释,无须解释。

package com.example.atooltipbar;import java.util.ArrayList;import java.util.List;import java.util.Random;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.content.Context;import android.util.AttributeSet;import android.view.Gravity;import android.view.View;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.ScaleAnimation;import android.widget.TextView;/** * @author xiaochj * @Date 2014-6-2 上午10:45:33 * @version */public class Tooltipbar extends TextView {    private AnimationSet mset = null;// 淡入淡出对象    private Animation mscale = null;// 伸缩对象    private int index = 0;    public static List<String> list = new ArrayList<String>();// 存储的数据    public Tooltipbar(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public Tooltipbar(Context context, AttributeSet attrs) {        super(context, attrs);    }    public Tooltipbar(Context context) {        super(context);        this.setGravity(Gravity.CENTER);        this.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                listGet();// 循环改变文本内容                animationFor();// 动画效果            }        });    }    /**     * 循环改变文本内容     */    public void listGet() {        if (list.size() == 0) {// 如果没有文本,则循环显示默认文本            return;        } else {            setText(list.get(index));// 从list中取元素显示出来            index++;            if (index == list.size()) {// 循环显示内容                index = 0;            }        }    }    /**     * 动画效果     */    public void animationFor() {        // 每点击一次,产生一个随机数,将数控制在10以内,通过判断来决定做哪种动画效果        Random rad = new Random();        int k = rad.nextInt();        int j = Math.abs(k % 10);        if (j == 1 || j == 3 || j == 5 || j == 7 || j == 9) {            mset = new AnimationSet(true);            // 淡入            AlphaAnimation malpha1 = new AlphaAnimation(0, 1);            malpha1.setDuration(3000);// 3s            mset.addAnimation(malpha1);            startAnimation(mset);        } else {            // 伸缩            mscale = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f,                    Animation.RELATIVE_TO_SELF, 0.5f);            mscale.setDuration(3000);// 3s            startAnimation(mscale);        }    }    /**     * 设置默认显示文本     * @param value     */    public void setOrigainText(String value){     this.setText(value);    }        /**     * 从数据源取到数据,存到list中使用     *      * @param value     */    public void setFromSource(String value) {        try {            JSONObject jsonObject = new JSONObject(value);            JSONArray jsonArray = jsonObject.optJSONArray("select");    if(jsonArray==null) {    return;   }   for (int i = 0; i < jsonArray.length(); i++) {    JSONObject data = (JSONObject) jsonArray.opt(i);    list.add(data.getString("value"));// 加入数据   }        } catch (JSONException e) {            e.printStackTrace();        }    }}


 

使用类如下:

package com.example.atooltipbar;import android.app.Activity;import android.os.Bundle;import android.widget.LinearLayout;public class MainActivity extends Activity {    private LinearLayout layout;    private Tooltipbar mTooltipbar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        layout = new LinearLayout(this);        setContentView(layout);        initTooltipbar();    }    /**     * 生成一个滚动条     */    public void initTooltipbar() {        mTooltipbar = new Tooltipbar(this);        mTooltipbar.setOrigainText("hello,world!");//默认显示文本信息        //循环显示文本        mTooltipbar.setFromSource("{select:[{value:abc},{value:efg},{value:hiii},{value:jklm}]}");        mTooltipbar.setTextSize(30);        layout.addView(mTooltipbar);    }}


 

第一次写博客,望多指教,不喜勿喷,呵呵~

该工程下载地址:http://download.csdn.net/download/sword_cx/7490245

0 0
原创粉丝点击