Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@
.DS_Store
/build
/captures
/idea/gradle.xml
.externalNativeBuild
2 changes: 1 addition & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

64 changes: 29 additions & 35 deletions FJMtSortButtonLib/src/main/java/fj/mtsortbutton/lib/SoreButton.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

Expand All @@ -26,12 +25,9 @@ public class SoreButton extends LinearLayout {
//圆点间距
private int distance = 10;

List<View> listSoreView = new ArrayList<>();
View soreView;
private List<Integer> listView;

//接口
private ViewControl viewControl;

//设置接口
public void setViewControl(ViewControl viewControl) {
this.viewControl = viewControl;
Expand All @@ -53,30 +49,18 @@ public SoreButton(Context context, AttributeSet attrs) {
}

//初始化ViewPager
private void initViewPager(){
listSoreView = new ArrayList<>();
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int size = listView.size();
for (int i = 0; i < size; i++) {
//循环拿到传入的View
soreView = layoutInflater.inflate(listView.get(i), null);
//通过接口回掉的形式返回当前的View,实现接口后开源拿到每个View然后进行操作
if (viewControl!=null){
viewControl.setView(soreView,i);
}
//将获取到的View添加到List中
listSoreView.add(soreView);
}
private void initViewPager() {
//设置viewPager的Adapter
viewPager.setAdapter(new ViewPagerAdapter(listSoreView));
viewPager.setAdapter(new ViewPagerAdapter(listView, viewControl));
//初始化LinearLayout,加入指示器
initLinearLayout(viewPager, size, llIndicator);
initLinearLayout(viewPager, listView.size(), llIndicator);
}

/**
* 设置指示器,设置ViewPager滑动事件监听
* @param viewPager --ViewPager
* @param pageSize --View的页数
*
* @param viewPager --ViewPager
* @param pageSize --View的页数
* @param linearLayout --LinearLayout
*/
private void initLinearLayout(ViewPager viewPager, int pageSize, LinearLayout linearLayout) {
Expand All @@ -96,8 +80,8 @@ private void initLinearLayout(ViewPager viewPager, int pageSize, LinearLayout li
image.setImageResource(RadioUnselected);
}
//设置宽高
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(distance, 0, distance, 0);
//将点添加到LinearLayout中
linearLayout.addView(image, params);
Expand All @@ -106,9 +90,13 @@ private void initLinearLayout(ViewPager viewPager, int pageSize, LinearLayout li
//ViewPager的滑动事件
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {}
public void onPageScrollStateChanged(int arg0) {
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}

@Override
public void onPageSelected(int arg0) {
//arg0当前ViewPager
Expand All @@ -126,39 +114,45 @@ public void onPageSelected(int arg0) {

/**
* 设置圆点距离
* @param distance --距离
*
* @param distance --距离
* @return
*/
public SoreButton setDistance(int distance){
public SoreButton setDistance(int distance) {
this.distance = distance;
return this;
}

/**
* 设置指示器图片
* @param radioSelect --选中图片
* @param radioUnselected --未选中图片
*
* @param radioSelect --选中图片
* @param radioUnselected --未选中图片
* @return
*/
public SoreButton setIndicator(int radioSelect,int radioUnselected){
public SoreButton setIndicator(int radioSelect, int radioUnselected) {
//选中图片
RadioSelect = radioSelect;
//未选中图片
RadioUnselected = radioUnselected;
return this;
}

/**
* 设置view
* @param listView --view
*
* @param listView --view
* @return
*/
public SoreButton setView(List<Integer> listView){
public SoreButton setView(List<Integer> listView) {
this.listView = listView;
return this;
}

/**
* 设置初始化
*/
public SoreButton init(){
public SoreButton init() {
initViewPager();
return this;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,38 +1,58 @@
package fj.mtsortbutton.lib.adapter;

import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import fj.mtsortbutton.lib.Interface.ViewControl;

public class ViewPagerAdapter extends PagerAdapter {

private List<View> views = null;

public ViewPagerAdapter(List<View> views) {
this.views = views;
}

@Override
public int getCount() {
return views.size() > 0 ? views.size() : 0;
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}

@Override
public Object instantiateItem(ViewGroup viewGroup, int i) {
viewGroup.addView(views.get(i));
return views.get(i);
}

@Override
public void destroyItem(ViewGroup viewGroup, int i, Object object) {
viewGroup.removeView(views.get(i));
}


private List<Integer> layoutArray = null;
private Map<Integer, View> viewMap = null;
//接口
private ViewControl viewControl;

public ViewPagerAdapter(@NonNull List<Integer> layoutArray, ViewControl viewControl) {
this.layoutArray = layoutArray;
this.viewControl = viewControl;

viewMap = new HashMap<>();
}

@Override
public int getCount() {
return layoutArray.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}

@Override
public Object instantiateItem(ViewGroup viewGroup, int i) {
View view = viewMap.get(i);
if (view == null) {
view = LayoutInflater.from(viewGroup.getContext()).inflate(layoutArray.get(i), null);
if (viewControl != null) {
viewControl.setView(view, i);
}
viewMap.put(i, view);
}
viewGroup.addView(view, i);
return view;
}

@Override
public void destroyItem(ViewGroup viewGroup, int i, Object object) {
viewGroup.removeView(viewMap.get(i));
}

}