2015-02-24 19:04:59 lxcao 阅读数 1932
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21117 人正在学习 去看看 李忠义

1.效果图

 clip_image002[10]

 2.创建页面文件(main.xml)  

     <Spinner
         android:id="@+id/spinner1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
 
     <TextView
         android:id="@+id/tvResult"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="选择的水果" />

3.创建下拉框的数据源 

        List<String> list = new ArrayList<String>();
        list.add("苹果"); 
        list.add("香蕉"); 
        list.add("橘子"); 
        list.add("香蕉");

4.创建适配器(下拉框的数据源是来自适配器) 

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list);

5.为适配器添加样式  

 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

         系统提供的样式如下

l simple_spinner_dropdown_item(列表-间距较高比较好看)

clip_image004[10]

l simple_spinner_item(列表-间距紧凑不好看)

 

clip_image006[10]

 

l simple_list_item_checked(复选框-选中的有绿沟)

 

clip_image008[10]

 

l simple_list_item_single_choice (单选按钮)

 

clip_image010[10]

 6.向控件Spinner添加适配器 

        Spinner sp=(Spinner) findViewById(R.id.spinner1);

       sp.setAdapter(adapter); 


     释义 

    1. setAdapter(SpinnerAdapteradapter) ,从类的继承关系上看ArrayAdapterSpinnerAdapter接口的间接实现类

clip_image012[10] 

7.实现选择项事件(使用匿名类实现接口)  

		sp.setOnItemSelectedListener(new OnItemSelectedListener() {
			// parent: 为控件Spinner   view:显示文字的TextView   position:下拉选项的位置从0开始  
			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
				TextView tvResult = (TextView) findViewById(R.id.tvResult);
				//获取Spinner控件的适配器
				ArrayAdapter<String> adapter = (ArrayAdapter<String>) parent.getAdapter();
				tvResult.setText(adapter.getItem(position));
			}
             //没有选中时的处理
			public void onNothingSelected(AdapterView<?> parent) {
			}
		});

8.后台整体代码如下   

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		List<String> list = new ArrayList<String>();
		list.add("苹果");
		list.add("香蕉");
		list.add("橘子");
		list.add("香蕉");
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
		adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
		Spinner sp = (Spinner) findViewById(R.id.spinner1);
		sp.setAdapter(adapter);
		sp.setOnItemSelectedListener(new OnItemSelectedListener() {
			// parent: 为控件Spinner   view:显示文字的TextView   position:下拉选项的位置从0开始  
			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
				TextView tvResult = (TextView) findViewById(R.id.tvResult);
				//获取Spinner控件的适配器
				ArrayAdapter<String> adapter = (ArrayAdapter<String>) parent.getAdapter();
				tvResult.setText(adapter.getItem(position));
			}
             //没有选中时的处理
			public void onNothingSelected(AdapterView<?> parent) {
			}
		});
	}


2018-04-08 18:00:33 lilihan12358 阅读数 9729
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21117 人正在学习 去看看 李忠义

NiceSpinner 是 Android 端的一款第三方控件,自带箭头动画效果

GitHub地址

效果图如下:



目录

1. 导入模块

2. 代码测试



1. 导入模块

在 Github 下载并导入模块

或者在 build.gradle 中修改:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

dependencies {
    compile 'com.github.arcadefire:nice-spinner:1.3.1'
}

建议导入模块,可以修改。



2. 代码测试

在 activity_main.xml 文件中加入:

<org.angmarch.views.NiceSpinner
    android:id="@+id/nice_spinner"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    app:arrowTint="@color/light_gray"
    app:textTint="@color/myBlack"
    app:dropDownListPaddingBottom="60dp"
    android:layout_marginEnd="12dp"
    android:layout_marginRight="12dp"/>
nametypeinfo
arrowTintcolorsets the color on the drop-down arrow
hideArrowbooleanset whether show or hide the drop-down arrow
arrowDrawablereferenceset the drawable of the drop-down arrow
textTintcolorset the text color
dropDownListPaddingBottomdimensionset the bottom padding of the drop-down list
backgroundSelectorintegerset the background selector for the drop-down list rows

在 MainActivity.java 中加入:

private NiceSpinner niceSpinner;
List<String> spinnerData = new LinkedList<>(Arrays.asList("一月", "二月", "三月", "四月",
        "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"));
niceSpinner = findViewById(R.id.nice_spinner);
niceSpinner.attachDataSource(spinnerData);
niceSpinner.setBackgroundResource(R.drawable.textview_round_border);
niceSpinner.setTextColor(Color.WHITE);
niceSpinner.setTextSize(13)
niceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {}
})


textview_round_border.xml (设置圆角等属性,放在 drawable 目录下)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- view背景色 -->
    <solid android:color="#52a2e2" />
    <!-- 边框颜色 宽度 -->
    <stroke
        android:width="1dip"
        android:color="#52a2e2" />
    <!-- 边框圆角 -->
    <corners
        android:bottomRightRadius="6dp"
        android:topRightRadius="6dp"
        android:bottomLeftRadius="6dp"
        android:topLeftRadius="6dp"/>
</shape>


在 nice-spinner-master/src/main/java/NiceSpinner 目录下可以修改属性


2019-05-16 16:31:00 weixin_30480651 阅读数 93
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21117 人正在学习 去看看 李忠义

1.NiceSpinner下拉框控件介绍

Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定制或者第三方设计的下拉框Spinner。NiceSpinner是一个第三方开源的下拉框Spinner。

2.使用步骤

(1)build.gradle(project)中一段代码替换为如下内容:(android studio工程的标配)

buildscript {
    
    repositories {
        google()
        maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        google()
        maven { url "https://jitpack.io" }
    }
}

(2)build.gradle(app)中添加依赖

dependencies {
    implementation 'com.github.arcadefire:nice-spinner:1.4'
}

3.NiceSpinner下拉框控件的属性分析

You can add attributes to customize the view. Available attributes:

用户可以在xml文件布局中添加以下表格中的属性到NiceSpinner控件中,对NiceSpinner进行设置。

arrowTint color 设置下拉箭头上的颜色
hideArrow boolean
设置是显示还是隐藏下拉箭头
arrowDrawable reference set the drawable of the drop-down arrow
textTint color 设置文本颜色
dropDownListPaddingBottom dimension 设置下拉列表的底部填充(即设置下拉框控件的高度)

4.使用案例

(1)xml文件页面布局

<1>主界面页面布局文件:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

    <!--app:arrowTint="@color/red" 设置下拉箭头的颜色-->
    <!--android:backgroundTint="@color/gray" 设置下拉框整体的颜色-->
    <!--app:textTint="@color/blue" 设置下拉框字体的颜色-->
    <!--android:backgroundTint="@color/pink" 设置整个空间的背景颜色-->
    <org.angmarch.views.NiceSpinner
        android:id="@+id/nice_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:arrowTint="@color/red"
        app:textTint="@color/blue"
        android:layout_margin="16dp"/>

    <Button
        android:id="@+id/bt_getvalue"
        android:text="获取选中值"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

<2>shape绘制NiceSpinner控件的背景图

平常在开发当中,通常会遇到这样的情况,就是会给控件增加一个背景,比如button,textview等!可以说shape就是一个形状定义工具。是xml绘图当中非常重要的一个工具。

使用shape一般是用来定义形状的,可以在xml上绘图,意思就是shape的表现形式就是一个xml文件,这个xml文件一般是放在drawable文件目录下,然后可以直接引用作为控件的背景。

shape_nicespinner.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- view背景色 -->
    <solid android:color="#52a2e2" />
    <!-- 边框颜色 宽度 -->
    <stroke
        android:width="1dip"
        android:color="#52a2e2" />
    <!-- 边框圆角 -->
    <corners
        android:bottomRightRadius="6dp"
        android:topRightRadius="6dp"
        android:bottomLeftRadius="6dp"
        android:topLeftRadius="6dp"/>
</shape>

shape_button_bg_normal.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- view背景色 -->
    <solid android:color="@color/pink" />
    <!-- 边框颜色 宽度 -->
    <stroke
        android:width="1dip"
        android:color="@color/pink" />
    <!-- 边框圆角 -->
    <corners
        android:bottomRightRadius="15dp"
        android:topRightRadius="15dp"
        android:bottomLeftRadius="15dp"
        android:topLeftRadius="15dp"/>
</shape>

shape_button_bg_press.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- view背景色 -->
    <solid android:color="@color/blue" />
    <!-- 边框颜色 宽度 -->
    <stroke
        android:width="1dip"
        android:color="@color/blue" />
    <!-- 边框圆角 -->
    <corners
        android:bottomRightRadius="15dp"
        android:topRightRadius="15dp"
        android:bottomLeftRadius="15dp"
        android:topLeftRadius="15dp"/>
</shape>

<3>图片选择器selector应用

selector_button.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--选中用蓝色的图-->
    <item android:state_pressed="true" android:drawable="@drawable/shape_button_bg_press"></item>
    <!--未选中用粉色的图-->
    <item android:drawable="@drawable/shape_button_bg_normal"></item>
</selector>

(2)java后台

package com.example.administrator.test64nicespinner;

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

import org.angmarch.views.NiceSpinner;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    Button bt_getvalue;
    NiceSpinner niceSpinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initUI();
    }

    private void initUI() {
        bt_getvalue = findViewById(R.id.bt_getvalue);
        bt_getvalue.setBackgroundResource(R.drawable.selector_button); //给button设置自定义样式
        bt_getvalue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(),niceSpinner.getText(),Toast.LENGTH_SHORT).show();
            }
        });
        niceSpinner = findViewById(R.id.nice_spinner);
        List<String> dataset = new LinkedList<>(Arrays.asList("One", "Two", "Three", "Four", "Five"));
        niceSpinner.attachDataSource(dataset); //设置下拉框要显示的数据集合
        niceSpinner.setBackgroundResource(R.drawable.shape_nicespinner); //设置控件的形状和背景
    }
}

5.效果图

 

转载于:https://www.cnblogs.com/luckyplj/p/10876418.html

2018-07-26 16:29:46 song_liang_liang 阅读数 949
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21117 人正在学习 去看看 李忠义

android自带的下拉刷新控件SwipeRefreshLayout

导读:下拉刷新功能,网上找的第三方框架最著名的pullToRefresh也早在2013年停止维护了,在做项目时发现谷歌公司自己就有的下拉刷新功能,位于v4包中。就是SwipeRefreshLayout。

使用方法

把需要下拉刷新的listView放入SwipeRefreshLayout中,下面是xml代码。

<android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_ly"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ListView>

    </android.support.v4.widget.SwipeRefreshLayout>

在来看下java代码,主要是设置refresh监听

ListView mListView = (ListView) findViewById(R.id.listview);
SwipeRefreshLayout mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_ly);
    //设置在listview上下拉刷新的监听
    mSwipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                //这里可以做一下下拉刷新的操作
                //例如去请求后台接口啥的。。。
            }
        });

    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mDatas);
    mListView.setAdapter(mAdapter);

延伸

在实际项目中不仅要有下拉刷新,也要有上拉加载。方法很多,我是新建了一个类继承swipeLayout并实现滚动监听AbsListView.OnScrollListener。

代码

public class RefreshLayout extends SwipeRefreshLayout implements AbsListView.OnScrollListener {

    /**
     * 滑动到最下面时的上拉操作
     */

    private int mTouchSlop;
    /**
     * listview实例
     */
    private ListView mListView;

    /**
     * 上拉监听器, 到了最底部的上拉加载操作
     */
    private OnLoadListener mOnLoadListener;

    /**
     * ListView的加载中footer
     */
    private View mListViewFooter;

    /**
     * 按下时的y坐标
     */
    private int mYDown;
    /**
     * 抬起时的y坐标, 与mYDown一起用于滑动到底部时判断是上拉还是下拉
     */
    private int mLastY;
    /**
     * 是否在加载中 ( 上拉加载更多 )
     */
    private boolean isLoading = false;

    /**
     * @param context
     */
    public RefreshLayout(Context context) {
        this(context, null);
    }

    public RefreshLayout(Context context, AttributeSet attrs) {
        super(context, attrs);

        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop() + 150;

        mListViewFooter = LayoutInflater.from(context).inflate(R.layout.listview_footer, null,
                false);
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);

        // 初始化ListView对象
        if (mListView == null) {
            getListView();
        }
    }

    /**
     * 获取ListView对象
     */
    private void getListView() {
        int childs = getChildCount();
        if (childs > 0) {
            View childView = getChildAt(0);
            if (childView instanceof ListView) {
                mListView = (ListView) childView;
                // 设置滚动监听器给ListView, 使得滚动的情况下也可以自动加载
                mListView.setOnScrollListener(this);
                Log.d(VIEW_LOG_TAG, "### 找到listview");
            }
        }
    }

    /*
     * (non-Javadoc)
     * @see android.view.ViewGroup#dispatchTouchEvent(android.view.MotionEvent)
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        final int action = event.getAction();

        switch (action) {
            case MotionEvent.ACTION_DOWN:
                // 按下
                mYDown = (int) event.getRawY();
                break;

            case MotionEvent.ACTION_MOVE:
                // 移动
                mLastY = (int) event.getRawY();
                break;

            case MotionEvent.ACTION_UP:
                // 抬起
                if (canLoad()) {
                    loadData();
                }
                break;
            default:
                break;
        }

        return super.dispatchTouchEvent(event);
    }

    /**
     * 是否可以加载更多, 条件是到了最底部, listview不在加载中, 且为上拉操作.
     *
     * @return
     */
    private boolean canLoad() {
        return isBottom() && !isLoading && isPullUp();
    }

    /**
     * 判断是否到了最底部
     */
    private boolean isBottom() {

        if (mListView != null && mListView.getAdapter() != null) {
            return mListView.getLastVisiblePosition() == (mListView.getAdapter().getCount() - 1);
        }
        return false;
    }

    /**
     * 是否是上拉操作
     *
     * @return
     */
    private boolean isPullUp() {
        return (mYDown - mLastY) >= mTouchSlop+250;
    }

    /**
     * 如果到了最底部,而且是上拉操作.那么执行onLoad方法
     */
    private void loadData() {
        if (mOnLoadListener != null) {
            // 设置状态
            setLoading(true);
            //
            mOnLoadListener.onLoad();
        }
    }

    /**
     * @param loading
     */
    public void setLoading(boolean loading) {
        isLoading = loading;
        if (isLoading) {
            mListView.addFooterView(mListViewFooter);
        } else {
            mListView.removeFooterView(mListViewFooter);
            mYDown = 0;
            mLastY = 0;
        }
    }

    /**
     * @param loadListener
     */
    public void setOnLoadListener(OnLoadListener loadListener) {
        mOnLoadListener = loadListener;
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
                         int totalItemCount) {
        // 滚动时到了最底部也可以加载更多
//        if (canLoad()) {
//            loadData();
//        }
    }

    /**
     * 加载更多的监听器
     *
     * @author mrsimple
     */
    public static interface OnLoadListener {
        public void onLoad();
    }
}
2016-05-19 18:15:16 qq_28963915 阅读数 1209
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21117 人正在学习 去看看 李忠义

在Android开发中下拉刷新功能是很常见的一个功能,通常意义而言只有像列表类才具有下拉刷新功能,像ListView,RecyclerView,可以给他们加载一个头布局和尾部局的样式来实现上下拉刷新,有一些第三方的类库就是通过这样的方式来实现的上下拉刷新,比如XListView,PullToReflesh等,但是如果是一个普通的页面怎么来实现下拉刷新呢,嗯 这是个问题
我觉得实现思路不外乎以下几种,
First:自定义一个ScrollView,通过监听他下拉的距离来刷新界面,比较类似于这个广告和标题的上拉悬停
Second:对最外层的下拉距离进行控制
Three:看看有没有啥现成的东西是可以使用的
通过查资料看到Google推出了一种新控件叫SwipeRefleshLayout以实现下拉刷新
SwipeRefleshLayout是V4包里边的东西,向下兼容到Android2.2,所以可以放心大胆的用了哦
只不过要注意的是此布局内只能有一个直接子View。
所以我们可以在其中放置一个布局或者一个列表,只要只有一个View就可以了,他这一点跟ScrollView一样
其实通过文档我们可以知道SwipeRefreshLayout只不过是继承了ViewGroup。

package com.longyue.swiperefreshlayoutdemo;

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * 只不过要注意的是此布局内只能有一个直接子View。
 * 其实通过文档我们可以知道SwipeRefreshLayout只不过是继承了ViewGroup。
 * */
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener{
    private static final int REFRESH_COMPLETE = 0X110;
    private SwipeRefreshLayout mSwipeLayout;
    private ListView mListView;
    private ArrayAdapter<String> mAdapter;
    private List<String> mDatas = new ArrayList<String>(Arrays.asList("Java", "Javascript", "C++", "Ruby", "Json",
            "HTML"));
    private Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
                case REFRESH_COMPLETE:
                    mDatas.addAll(Arrays.asList("Lucene", "Canvas", "Bitmap"));
                    mAdapter.notifyDataSetChanged();
                    mSwipeLayout.setRefreshing(false);//设置组件的刷洗状态。
                    break;

            }
        }
    };

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (ListView) findViewById(R.id.id_listview);
        mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly);
        mSwipeLayout.setOnRefreshListener(this);//:设置手势滑动监听器。
        mSwipeLayout.setColorSchemeColors(//设置进度动画的颜色
                R.color.swipe_color_1,
                R.color.swipe_color_2,
                R.color.swipe_color_3,
                R.color.swipe_color_4);
        mSwipeLayout.setSize(SwipeRefreshLayout.LARGE);//设置进度圈的大小,只有两个值:DEFAULT、LARGE
        //mSwipeLayout.setProgressBackgroundColorSchemeColor(getResources().getColor(R.color.swipe_background_color));
        mSwipeLayout.setProgressBackgroundColor(R.color.swipe_background_color);
        //mSwipeLayout.setPadding(20, 20, 20, 20);
        //mSwipeLayout.setProgressViewOffset(true, 100, 300);//控制下拉刷新图标的活动范围
        //mSwipeLayout.setDistanceToTriggerSync(30);//触发下拉刷新的距离
        mSwipeLayout.setProgressViewEndTarget(true, 300);//下拉图标结束的结束的位置
        mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDatas);
        mListView.setAdapter(mAdapter);
    }

    public void onRefresh() {
        mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2000);
    }
}

引用的色值资源

<color name="swipe_color_1">#B6DB49</color>
<color name="swipe_color_2">#99CC00</color>
<color name="swipe_color_3">#8ABD00</color>
<color name="swipe_color_4">#7CAF00</color>
<color name="swipe_background_color">#ccc</color>

代码就这么多,就不传Demo了

没有更多推荐了,返回首页