点击按钮,先自动进行下拉刷新,也可以手动刷新,刷新完后,最后就多一行数据。有四个选项卡。

前两天导师要求做一个给本科学生预定机房座位的app,出发点来自这里。做着做着遇到很多问题,都解决了。这个效果感觉还不错,整理一下。

MainActivity

package com.example.fragmentmytest;

import android.content.DialogInterface;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentTransaction;

import android.text.TextUtils;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import com.example.dialog.CustomDialog;

import com.example.dialog.CustomDialogChangePwd;

import com.example.dialog.CustomDialogSignUp;

import com.example.myapplication.CustomApplication;

import com.example.utils.ToastUtils;

public class MainActivity extends FragmentActivity {

public static final String serverAddress = "http://192.168.1.101";

public static final String serverPort = "8080";

OneFragment onefragment;

TwoFragment twofragment;

ThreeFragment threefragment;

FourFragment fourfragment;

Button btn1, btn2, btn3, btn4;

OnClickListener clicklistener;

TextView stu_msg;

private CustomApplication app;

/**

* 用于对Fragment进行管理

*/

FragmentManager fragementManager;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

app = (CustomApplication) getApplication(); // 获得CustomApplication对象

// 必须继承FragmentActivity才能用getSupportFragmentManager();最好使用v4.app,已经没怎么有人使用app中的了

fragementManager = getSupportFragmentManager();

init();

// 第一次启动时选中第0个tab

setTabSelection(0);// 不能左右滑动的默认值

}

public void init() {

stu_msg = (TextView) findViewById(R.id.stu_msg);

btn1 = (Button) findViewById(R.id.btn1);

btn2 = (Button) findViewById(R.id.btn2);

btn3 = (Button) findViewById(R.id.btn3);

btn4 = (Button) findViewById(R.id.btn4);

clicklistener = new OnClickListener() {

public void onClick(View arg0) {

int id = arg0.getId();

switch (id) {

case R.id.btn1:

setTabSelection(0);

break;

case R.id.btn2:

setTabSelection(1);

break;

case R.id.btn3:

setTabSelection(2);

break;

case R.id.btn4:

setTabSelection(3);

break;

default:

break;

}

}

};

btn1.setOnClickListener(clicklistener);

btn2.setOnClickListener(clicklistener);

btn3.setOnClickListener(clicklistener);

btn4.setOnClickListener(clicklistener);

}

private void setTabSelection(int index) {

clearSelection();// 每次选中之前先清楚掉上次的选中状态

// 开启一个Fragment事务

FragmentTransaction transaction = fragementManager.beginTransaction();

// 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况

hideFragements(transaction);

switch (index) {

case 0:

btn1.setBackgroundColor(Color.parseColor("#CFEFEF"));

btn1.setTextColor(Color.parseColor("#FFFFFF"));

app.setRoom(btn1.getText().toString());

if (onefragment == null) {

onefragment = new OneFragment();

transaction.add(R.id.framelayout, onefragment);

} else {

transaction.show(onefragment);

onefragment.mPullRefreshListView.setRefreshing(true);

}

break;

case 1:

btn2.setBackgroundColor(Color.parseColor("#CFEFEF"));

btn2.setTextColor(Color.parseColor("#FFFFFF"));

app.setRoom(btn2.getText().toString());

if (twofragment == null) {

twofragment = new TwoFragment();

transaction.add(R.id.framelayout, twofragment);

} else {

transaction.show(twofragment);

twofragment.mPullRefreshListView.setRefreshing(true);

}

break;

case 2:

btn3.setBackgroundColor(Color.parseColor("#CFEFEF"));

btn3.setTextColor(Color.parseColor("#FFFFFF"));

app.setRoom(btn3.getText().toString());

if (threefragment == null) {

threefragment = new ThreeFragment();

transaction.add(R.id.framelayout, threefragment);

} else {

transaction.show(threefragment);

threefragment.mPullRefreshListView.setRefreshing(true);

}

break;

case 3:

btn4.setBackgroundColor(Color.parseColor("#CFEFEF"));

btn4.setTextColor(Color.parseColor("#FFFFFF"));

app.setRoom(btn4.getText().toString());

if (fourfragment == null) {

fourfragment = new FourFragment();

transaction.add(R.id.framelayout, fourfragment);

} else {

transaction.show(fourfragment);

fourfragment.mPullRefreshListView.setRefreshing(true);

}

break;

default:

break;

}

transaction.commit();

}

/**

* 清除掉所有的选中状态。

*/

private void clearSelection() {

btn1.setBackgroundColor(Color.parseColor("#EFEFEF"));

btn1.setTextColor(Color.parseColor("#234567"));

btn2.setBackgroundColor(Color.parseColor("#EFEFEF"));

btn2.setTextColor(Color.parseColor("#234567"));

btn3.setBackgroundColor(Color.parseColor("#EFEFEF"));

btn3.setTextColor(Color.parseColor("#234567"));

btn4.setBackgroundColor(Color.parseColor("#EFEFEF"));

btn4.setTextColor(Color.parseColor("#234567"));

}

/**

* 将所有的Fragment都置为隐藏状态。

*

* @param transaction

* 用于对Fragment执行操作的事务

*/

private void hideFragements(FragmentTransaction transaction) {

if (onefragment != null) {

transaction.hide(onefragment);

}

if (twofragment != null) {

transaction.hide(twofragment);

}

if (threefragment != null) {

transaction.hide(threefragment);

}

if (fourfragment != null) {

transaction.hide(fourfragment);

}

}

}

四个Fragment都差不多,这里是第一个:

package com.example.fragmentmytest;

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

import android.app.Activity;

import android.os.AsyncTask;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import com.example.adapter.MyAdapter;

import com.example.dao.ComputerRoomStatus;

import com.example.utils.ToastUtils;

import com.handmark.pulltorefresh.library.PullToRefreshBase;

import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;

import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;

import com.handmark.pulltorefresh.library.PullToRefreshListView;

public class OneFragment extends Fragment {

String room = "204";

public PullToRefreshListView mPullRefreshListView;

// private ArrayAdapter mAdapter;

private int mItemCount = 9;

// private LinkedList mListItems;

private MyAdapter mAdapter;

private List data;

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceStatus) {

View view = inflater.inflate(R.layout.twolayout, container, false);

mPullRefreshListView = (PullToRefreshListView) view

.findViewById(R.id.pull_refresh_list_2);

mPullRefreshListView.setMode(Mode.PULL_FROM_START);

return view;

}

@Override

public void onViewCreated(View view, Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onViewCreated(view, savedInstanceState);

initDatas();

// mAdapter1 = new MyAdapter(getActivity(), data);

mAdapter = new MyAdapter(getActivity(), data, room,mPullRefreshListView);

mPullRefreshListView.setAdapter(mAdapter);

mPullRefreshListView

.setOnRefreshListener(new OnRefreshListener2() {

@Override

public void onPullDownToRefresh(

PullToRefreshBase refreshView) {

Log.e("TAG", "onPullDownToRefresh");

// 这里写下拉刷新的任务

new GetDataTask().execute();

}

@Override

public void onPullUpToRefresh(

PullToRefreshBase refreshView) {

Log.e("TAG", "onPullUpToRefresh");

// 这里写上拉加载更多的任务

new GetDataTask().execute();

}

});

mPullRefreshListView.setRefreshing(true);

}

private void initDatas() {

// 初始化数据和数据源

data = new ArrayList();

for (int i = 0; i < mItemCount; i++) {

data.add(new ComputerRoomStatus(i, "1", "1", "3", "1", "1", "1"));

}

}

protected void autoRefresh() {

mPullRefreshListView.setRefreshing(true);

}

// 请求网络接口,这里是做的假数据

private class GetDataTask extends AsyncTask {

@Override

protected String doInBackground(Void... params) {

try {

// TODO 解析json

Thread.sleep(1000);

} catch (InterruptedException e) {

}

return "" + (mItemCount++);

}

@Override

protected void onPostExecute(String result) {

// data.add(new

// ComputerRoomStatus(1,result,result,result,result,result,result));

data.add(new ComputerRoomStatus(Integer.parseInt(result), "", "",

"3", "1", "1", "1"));

mAdapter.notifyDataSetChanged();

mPullRefreshListView.onRefreshComplete();

}

}

}

MyAdapter

package com.example.adapter;

import java.util.List;

import android.content.Context;

import android.content.DialogInterface;

import android.content.res.ColorStateList;

import android.graphics.Color;

import android.text.TextUtils;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.TextView;

import com.example.dao.ComputerRoomStatus;

import com.example.dialog.CustomDialogOrder;

import com.example.fragmentmytest.R;

import com.example.utils.ToastUtils;

import com.handmark.pulltorefresh.library.PullToRefreshListView;

public class MyAdapter extends BaseAdapter {

private Context context;

private List data;

private LayoutInflater layoutInflater;

private String room;

private ViewHolder holder = null;

private PullToRefreshListView mPullRefreshListView;

public MyAdapter(Context context, List data, String room,PullToRefreshListView mPullRefreshListView) {

this.context = context;

this.data = data;

this.room = room;

this.mPullRefreshListView = mPullRefreshListView;

layoutInflater = LayoutInflater.from(context);

}

@Override

public int getCount() {

return data.size();

}

@Override

public Object getItem(int position) {

return data.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

holder = new ViewHolder();

convertView = layoutInflater.inflate(R.layout.lv_item, null);

holder.seatId = (TextView) convertView.findViewById(R.id.seatId);

holder.time1 = (Button) convertView.findViewById(R.id.time1);

holder.time2 = (Button) convertView.findViewById(R.id.time2);

holder.time3 = (Button) convertView.findViewById(R.id.time3);

holder.time4 = (Button) convertView.findViewById(R.id.time4);

holder.time5 = (Button) convertView.findViewById(R.id.time5);

holder.time6 = (Button) convertView.findViewById(R.id.time6);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

// 获得集合中实体类对象

final ComputerRoomStatus s = data.get(position);

holder.seatId.setText(s.getId() + "");

holder.time1.setOnClickListener(new lvButtonListener(position));

holder.time2.setOnClickListener(new lvButtonListener(position));

holder.time3.setOnClickListener(new lvButtonListener(position));

holder.time4.setOnClickListener(new lvButtonListener(position));

holder.time5.setOnClickListener(new lvButtonListener(position));

holder.time6.setOnClickListener(new lvButtonListener(position));

//略一部分不要紧的......

return convertView;

}

class lvButtonListener implements View.OnClickListener {

private int position;

lvButtonListener(int pos) {

position = pos;

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.time1:

showDialog(position, "1");

break;

case R.id.time2:

showDialog(position, "2");

break;

case R.id.time3:

showDialog(position, "3");

break;

case R.id.time4:

showDialog(position, "4");

break;

case R.id.time5:

showDialog(position, "5");

break;

case R.id.time6:

showDialog(position, "6");

break;

default:

break;

}

}

}

public void showDialog(final int id, final String witch) {

final CustomDialogOrder.Builder builder = new CustomDialogOrder.Builder(

context);

builder.setTitle("预约上机");

builder.setPositiveButton("预约", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

// 提交的时候提交application的room和position和witch

ToastUtils.MyToast(context, room + ":" + id + ":" + witch);

//TODO 拼接字符串 GET到指定的接口

//TODO 并且刷新执行下拉刷新

mPullRefreshListView.setRefreshing(true);

}

});

builder.setNegativeButton("取消",

new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

});

builder.create().show();

}

}

class ViewHolder {

TextView seatId;

Button time1, time2, time3, time4, time5, time6;

}

以上所述是小编给大家介绍的Android 仿今日头条简单的刷新效果实例代码的相关知识,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,再此也非常感谢大家对脚本之家网站的支持!

android 今日头条加载动画,Android 仿今日头条简单的刷新效果实例代码相关推荐

  1. android 今日头条加载动画,高仿今日头条加载动画

    01 每每浏览手机app时,发现有的效果体验不错,作为一位程序员,总想要是自己来做,怎么实现. 今天我们来模仿今日头条的加载动画. 首先我们来看一下我们这个demo最终效果,有图有真相. 高仿今日头条 ...

  2. android listview 预加载动画,Android - 使用预加载的数据库填充ListView

    我想使用我已经使用SQLite数据库浏览器创建的预加载数据库来填充listview.但是,我不断收紧.对于DatabaseHelper类,我精确地在http://www.reigndesign.com ...

  3. android listview预加载动画,Android开发Activity页面预加载

    概述 某些业务场景下,为了提高用户体验,我们可能需要在前一个页面就将下一个页面的数据准备好,减少用户后续操作的时间.因为Activity在设计上采用了低耦合,高度的隔离使得传统的预加载Activity ...

  4. android 海浪动画,android自定义波浪加载动画的实现代码

    本文实例为大家分享了android自定义波浪加载动画的具体代码,供大家参考,具体内容如下 效果图 1.自定义控件 WaveView package com.example.wh.myapplicati ...

  5. Android 自定义进度加载动画

    偶尔浏览一个android开发网站,发现进度加载动画比较不错,觉得挺有意思 就自己参考了下自己做了一个进度加载动画 效果图如下: 首选来看自定义动画 package com.itzb.paintdem ...

  6. android 自定义图片加载动画效果,Android自定义加载动画-感染体

    Android自定义动画系列七,今天来分享第七个自定义Loading动画(InfectionBallBuilder),看上去感觉有种病毒源被感染的感觉,所以名字就叫感染体,这个动画做出来的效果,我不怎 ...

  7. Xamarin.Android 实现正在加载动画效果

    通过添加不同帧数的图片,来实现自己想要的动画效果正在加载... 第一步: Resources/drawable 目录下添加每一帧的图片,我设定了18帧 第二步:实现动画效果,drawable下新建页面 ...

  8. android svga加载动画,android svga使用

    首先在项目的build.gradle中加入allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 然后在app下 ...

  9. android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...

    本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...

最新文章

  1. tls 流量画像——直接使用图像处理的思路探索,待进一步观察
  2. dsp指令ixh_第一章 DSP入门教程(非常经典).pdf
  3. ABAP 屏幕上动态修改按钮的图标
  4. STS插件_ springsource-tool-suite插件各个历史版本
  5. xml不显示css样式_如何使用CSS显示XML?
  6. 【成长之路】JavaScript中,模拟 call 的底层实现
  7. X++中对字符串进行操作的函数
  8. POJ3169 Layout(差分约束)
  9. C6748和音频ADC连接时候的TDM以及I2S格式问题
  10. 现代通信原理4.1:随机变量
  11. delphi利用bing翻译API做的多国语言翻译软件
  12. python可视化47|最常用5个排序(Ranking)关系图
  13. 答题器——游戏工作室的亲密搭档!
  14. 计算机科学教育英文论文题目,学生方面计算机相关的毕业论文,关于计算机专业英语课程教学改革和实践相关在职研究生毕业论文...
  15. 旅行,写作,编程 :IT文艺青年的生活态度
  16. JAVA 根据商品属性生成(SKU)规格算法
  17. 武林大会之国产数据库风云榜-2021年11月
  18. 计算机基础知识考试模拟试题,计算机基础知识选择题考试必备考试真题模拟题...
  19. 【docker】Mac m1 系统使用docker发布镜像
  20. JAVA关于Calendar类的使用

热门文章

  1. goback history 传递参数_$ionicHistory.goBack()与路由跳转不同之处。
  2. java 单例 构造函数,Java单例模式学习
  3. 单摄手机逆袭,OPPO R9s Plus对比三大拍照神器
  4. Web前端自学好学吗?求职方向有哪些
  5. vue路由传参的两种方式
  6. linux 终端显示emoji,如何从Linux命令行快速搜索表情符号 | MOS86
  7. windows与linux文件互传,实现Linux与windows文件互传
  8. redmibook pro 15 螃蟹网卡信号差的问题
  9. Python爬取北京2.3万条租房信息,发现快租不起房子了!
  10. java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx