Android选择弹窗(自定义可扩展)

CSDN上有篇Android滚轮时间选择控件(可扩展自定义),阅读量很高,看来大家对这块的需要还是挺大的。版本迭代开发自测完,等待测试提bug。就抽空把项目需求,自己自定义的一个控件分享给需要的人。里面可以学习到Builder创建者模式,还有就是使用接口,一般新手可能不一定会使用。

先想吐槽一下,今天负能量有点多,端午想找人出去玩,都找不到,回家的回家,陪妹子的陪妹子。果然都是一伙重色轻友的人。我也得抓紧了。

好吧,进入正题。先来看看效果图。

1.Hello World是一个TextView控件,用于显示从弹窗选择的内容。里面控件的背景色,标题,文字大小颜色都可以自定义。实际项目中可以用于比如android长按的时候,弹出一些选择的操作,还有就是一些金额选择等等。

Android选择弹窗(自定义可扩展)_第1张图片
主界面
Android选择弹窗(自定义可扩展)_第2张图片
选择弹窗
Android选择弹窗(自定义可扩展)_第3张图片
选择结果
Android选择弹窗(自定义可扩展)_第4张图片
实际项目中

2.布局文件




    

    

3.主界面操作

package andrew.selectdialogdemo;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {
    private TextView mShowTextView;
    private Button mSureButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mShowTextView = (TextView) this.findViewById(R.id.show_tv);
        mSureButton = (Button) this.findViewById(R.id.sure_btn);
        mSureButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //配置数据源
                final List list = new ArrayList();
                list.add("美女你好");
                list.add("帅哥你好");
                list.add("世界你好");
                //构造实例化选择弹窗
               SelectDialog chooseDialog = new SelectDialog.Builder(MainActivity.this)
                        .setDataList(list)
                        .setButtonColor(getResources().getColor(R.color.text_10))
                        .setButtonSize(14)
                        .setLastButtonSize(14)
                        .setTitleText("编辑选择")
                        .build();
                //对选择弹窗item点击事件监听
                chooseDialog.setButtonListener(new BaseNoticeWindow.OnButtonListener() {
                    @Override
                    public void onSureListener(View v) {
                        mShowTextView.setText(list.get((Integer) v.getTag()));
                    }
                    @Override
                    public void onDiscardListener(View v) {

                    }
                    @Override
                    public void onDismissListener(View v, int nType) {

                    }
                });
                chooseDialog.show(mShowTextView);

            }
        });

    }
}

4.重头戏,选择弹窗SelectDialog

package andrew.selectdialogdemo;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * 选择弹框
 * Created by liuhongxia on 2016/05/30
 */

public class SelectDialog extends BaseNoticeWindow implements View.OnClickListener {


    private List mDataList = new ArrayList(0);

    private Context mContext;
    private String mTitleText = null;
    private int mTitleBackgroundColor = -1;
    private int mTitleTextColor = Color.WHITE;
    private int mButtonColor = -1;
    private int mTitleTextSize;
    private int mButtonSize;
    private int mLastButtonSize;

    private ArrayList


5.总结

对于在代码里面写view,可能有些新手会觉得看上去有点吃力,最简单直接的方法就是,把代码里的view弄成xml布局,这样就会更加方便直接。



转载请注明转自:http://blog.csdn.net/u011176685/article/details/51546404

简书博客:http://www.jianshu.com/p/874a8736cbd0

demo下载地址:http://download.csdn.net/detail/u011176685/9536658

你可能感兴趣的:(Android)