1.使用代码:
public class MainActivity extends AppCompatActivity {
private List<BottomNavigationBar.BottomItem> bottomItemList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomItemList.add(
new BottomNavigationBar.BottomItem("首页",R.mipmap.shouye_false,R.mipmap.shouye_true));
bottomItemList.add(
new BottomNavigationBar.BottomItem("商城",R.mipmap.gongju_false,R.mipmap.gongju_true));
bottomItemList.add(
new BottomNavigationBar.BottomItem("我的",R.mipmap.my_false,R.mipmap.my_true));
final BottomNavigationBar navigationBar = findViewById(R.id.bottom);
navigationBar.addBottomItem(bottomItemList);
navigationBar.setImageViewSize(25);
navigationBar.setTextSize(15);
navigationBar.setSelectPosition(1);
navigationBar.setSelectedTextColor(Color.BLUE);
navigationBar.setItemOnClickListener(new BottomNavigationBar.OnClickItemListener() {
@Override
public void itemClick(BottomNavigationBar.BottomItem item,int position) {
}
});
}
}
2.主要代码:BottomNavigationBar
package com.miaozi.demo10;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.List;
/**
* created by panshimu
* on 2019/9/2
*/
public class BottomNavigationBar extends LinearLayout {
private List<BottomItem> mBottomItemList;
private int mUnselectedTextColor = Color.GRAY;
private int mSelectedTextColor = Color.RED;
private int mCurrentPosition = -1;
private int mTextSize = 15;
private int mBackGroupColor = Color.WHITE;
private int mImageViewSize = ViewGroup.LayoutParams.WRAP_CONTENT;
private int mMargin = 10;
private int mTopLineColor = Color.GRAY;
private int mTopLineWidth = 1;
private Paint mPaint;
public BottomNavigationBar(Context context) {
this(context,null);
}
public BottomNavigationBar(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public BottomNavigationBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setOrientation(HORIZONTAL);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(mTopLineWidth);
mPaint.setColor(mTopLineColor);
mPaint.setDither(true);
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
canvas.drawLine(0,0,getMeasuredWidth(),0,mPaint);
}
private void initLayout() {
if(mBottomItemList == null && mBottomItemList.size() == 0)
return;
removeAllViews();
for (int i = 0 ; i < mBottomItemList.size() ; i++ ){
initItem(i,mBottomItemList.get(i));
}
setSelectPosition(0);
}
public void setUnselectedTextColor(int color){
this.mUnselectedTextColor = color;
if(mBottomItemList.size() > 0 && mCurrentPosition >= 0){
mBottomItemList.get(mCurrentPosition).getTextView().setTextColor(color);
}
}
public void setSelectedTextColor(int color){
this.mSelectedTextColor = color;
if(mBottomItemList.size() > 0 && mCurrentPosition >= 0){
mBottomItemList.get(mCurrentPosition).getTextView().setTextColor(color);
}
}
public void setTextSize(int size){
this.mTextSize = size;
for(BottomItem item : mBottomItemList){
item.getTextView().setTextSize(size);
}
}
public void setImageViewSize(int size){
this.mImageViewSize = size;
for(BottomItem item : mBottomItemList){
ViewGroup.LayoutParams lp = item.getImageView().getLayoutParams();
lp.width = dp2px(size);
lp.height = lp.width;
item.getImageView().setLayoutParams(lp);
}
}
public void setBackGroupColor(int color){
this.mBackGroupColor = color;
for(BottomItem item : mBottomItemList){
item.getContentView().setBackgroundColor(color);
}
}
private void initItem(final int position, BottomItem item){
LinearLayout ll = new LinearLayout(getContext());
ll.setOrientation(VERTICAL);
ll.setGravity(Gravity.CENTER);
LayoutParams params = new LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT);
params.weight = 1;
ll.setLayoutParams(params);
TextView tv = new TextView(getContext());
LayoutParams lpTv = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lpTv.bottomMargin = mMargin;
tv.setLayoutParams(lpTv);
tv.setText(item.getText());
tv.setTextColor(mUnselectedTextColor);
tv.setTextSize(mTextSize);
ImageView iv = new ImageView(getContext());
LayoutParams lpIv = new LayoutParams(mImageViewSize, mImageViewSize);
lpIv.topMargin = mMargin;
iv.setLayoutParams(lpIv);
iv.setImageResource(item.getUnselectedResId());
item.setTextView(tv);
item.setImageView(iv);
ll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
setSelectPosition(position);
}
});
item.setContentView(ll);
ll.addView(iv);
ll.addView(tv);
ll.setBackgroundColor(mBackGroupColor);
addView(ll);
}
public void setSelectPosition(int position){
if( position<0 || position > mBottomItemList.size() || position == mCurrentPosition){
return;
}
if(mCurrentPosition >= 0) {
BottomItem bottomItem = mBottomItemList.get(mCurrentPosition);
bottomItem.getImageView().setImageResource(mBottomItemList.get(mCurrentPosition).getUnselectedResId());
bottomItem.getTextView().setTextColor(mUnselectedTextColor);
}
BottomItem bi = mBottomItemList.get(position);
bi.getImageView().setImageResource(mBottomItemList.get(position).getSelectedResId());
bi.getTextView().setTextColor(mSelectedTextColor);
mCurrentPosition = position;
if(mItemClick != null){
mItemClick.itemClick(mBottomItemList.get(position),position);
}
}
private int dp2px(int mImageViewSize) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,mImageViewSize,getContext().getResources().getDisplayMetrics());
}
public void addBottomItem(List<BottomItem> list){
if(mBottomItemList != null){
mBottomItemList.clear();
}
mBottomItemList = list;
initLayout();
}
private OnClickItemListener mItemClick;
public void setItemOnClickListener(OnClickItemListener clickListener){
this.mItemClick = clickListener;
}
public interface OnClickItemListener{
void itemClick(BottomItem item,int position);
}
public static class BottomItem{
private String text;
private int unselectedResId;
private int selectedResId;
private TextView textView;
private ImageView imageView;
private ViewGroup contentView;
public ViewGroup getContentView() {
return contentView;
}
public void setContentView(ViewGroup contentView) {
this.contentView = contentView;
}
public TextView getTextView() {
return textView;
}
public void setTextView(TextView textView) {
this.textView = textView;
}
public ImageView getImageView() {
return imageView;
}
public void setImageView(ImageView imageView) {
this.imageView = imageView;
}
public BottomItem(String text, int unselectedResId, int selectedResId) {
this.text = text;
this.unselectedResId = unselectedResId;
this.selectedResId = selectedResId;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getUnselectedResId() {
return unselectedResId;
}
public void setUnselectedResId(int unselectedResId) {
this.unselectedResId = unselectedResId;
}
public int getSelectedResId() {
return selectedResId;
}
public void setSelectedResId(int selectedResId) {
this.selectedResId = selectedResId;
}
}
}
代码很简单,相信大家一看就懂
网友评论