在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android自定义控件例子源码下载

android自定义控件例子源码下载

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:5.90M
  • 下载次数:17
  • 浏览次数:179
  • 发布时间:2015-12-29
  • 实例类别:Android平台开发
  • 发 布 人:星火燎原
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android 控件

实例介绍

【实例简介】

【实例截图】

【核心代码】


package scratchcard.cbt.com.learnuserdefinedview;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;

/**
 * Created by caobotao on 15/12/9.
 */
public class TopBar extends RelativeLayout{
    /*
     * 声明控件
     */
    private Button leftBtn;//左按钮
    private TextView textView;//中间文本框
    private Button rightBtn;//右按钮

    /*
     * 声明三个控件的属性
     */
    //声明左按钮的属性
    private String leftText;//按钮文本
    private Drawable leftBackground;//按钮背景
    private int leftTextColor;//按钮文本颜色
    //声明中间文本框的属性
    private String tbTitle;//文本框文本
    private float titleTextSize;//文本框字体大小
    private int titleTextColor;//文本框字体颜色
    //声明右按钮的属性
    private String rightText;//按钮文本
    private Drawable rightBackground;//按钮背景
    private int rightTextColor;//按钮文本颜色

    /*
     * 声明三个控件的布局属性
     */
    private LayoutParams leftBtnLayoutParams;
    private LayoutParams textViewLayoutParams;
    private LayoutParams rightBtnLayoutParams;

    //声明左右按钮点击监听
    private TopBarBtnsOnClickListener listener;

    //创建一个监听左右按钮点击的接口
    public interface TopBarBtnsOnClickListener{
        public void leftBtnOnClick();//左按钮被点击的事件
        public void rightBtnOnClick();//右按钮被点击的事件
    }

    //向外提供一个设置监听的方法
    public void setOnTopBarBtnsClick(TopBarBtnsOnClickListener listener){
        this.listener = listener;
    }

    //重写构造方法
    public TopBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        /*
         * 用TypedArray可以获取用户在xml中声明的此控件的所有属性,以键值对存储,
         * K:资源文件(例 R.styleable.topBar_leftText)
         * V:属性值
         */
        TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.topBar);

        //为左按钮的属性赋值
        leftText = ta.getString(R.styleable.topBar_leftText);
        leftBackground = ta.getDrawable(R.styleable.topBar_leftBackground);
        leftTextColor = ta.getInt(R.styleable.topBar_leftTextColor,0);

        //为中间的文本框的属性赋值
        tbTitle = ta.getString(R.styleable.topBar_tbTitle);
        titleTextSize = ta.getDimension(R.styleable.topBar_titleTextSize,0);
        titleTextColor = ta.getInt(R.styleable.topBar_titleTextColor,0);

        //为右按钮的属性赋值
        rightText = ta.getString(R.styleable.topBar_rightText);
        rightBackground = ta.getDrawable(R.styleable.topBar_rightBackground);
        rightTextColor = ta.getInt(R.styleable.topBar_rightTextColor,0);

        //使用完TypedArray之后需要调用其recycle()方法,以便重用
        ta.recycle();

        //实例化三个控件
        leftBtn = new Button(context);
        textView = new TextView(context);
        rightBtn = new Button(context);

        //设置左按钮的属性
        leftBtn.setText(leftText);
        leftBtn.setBackground(leftBackground);
        leftBtn.setTextColor(leftTextColor);
        //设置文本框的属性
        textView.setText(tbTitle);
        textView.setTextSize(titleTextSize);
        textView.setTextColor(titleTextColor);
        textView.setGravity(Gravity.CENTER);
        //设置右按钮的属性
        rightBtn.setText(rightText);
        rightBtn.setBackground(rightBackground);
        rightBtn.setTextColor(rightTextColor);

        //设置此自定义控件的背景颜色
        setBackgroundColor(0xFFF59563);

        //实例化左按钮的布局属性
        leftBtnLayoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        //设置左按钮靠左显示
        leftBtnLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,TRUE);
        //将左按钮添加到本自定义控件中
        addView(leftBtn,leftBtnLayoutParams);

        //同上
        rightBtnLayoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        rightBtnLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,TRUE);
        addView(rightBtn,rightBtnLayoutParams);

        //同上
        textViewLayoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
        textViewLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE);
        addView(textView,textViewLayoutParams);

        //回调左按钮的监听事件
        leftBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.leftBtnOnClick();
            }
        });

        //回调右按钮的监听事件
        rightBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.rightBtnOnClick();
            }
        });

    }

    //当然,我们还可以添加其他控制此控件的方法,如设置左按钮是否可见等等,大家可根据自己的需求进行扩展
    public void setLeftBtnVisible(boolean isVisible){
        leftBtn.setVisibility(isVisible ? VISIBLE : INVISIBLE);
    }
}


标签: Android 控件

实例下载地址

android自定义控件例子源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警