- 浏览: 693100 次
- 性别:
- 来自: 苏州
最新评论
-
usedlie:
if (flag) { matrix.set(matrix ...
android view的缩放平移简单实现 -
jin290:
简单 快捷 非常棒 可以直接用
android 应用实现微信好友或朋友圈分享 -
貌似掉线:
0是朋友1是朋友圈
android 应用实现微信好友或朋友圈分享 -
zhangzhanlei:
[color=red][/color]
android 应用实现微信好友或朋友圈分享 -
shizhangliao:
android适配多分辨率的小技巧
在使用listview时,滑动加载可以提高效率,增加用户体验。
主要用到一个OnScrollListener
主要用到一个OnScrollListener
/** * The view is not scrolling. Note navigating the list using the trackball counts as * being in the idle state since these transitions are not animated. */ public static int SCROLL_STATE_IDLE = 0; /** * The user is scrolling using touch, and their finger is still on the screen */ public static int SCROLL_STATE_TOUCH_SCROLL = 1; /** * The user had previously been scrolling using touch and had performed a fling. The * animation is now coasting to a stop */ public static int SCROLL_STATE_FLING = 2; /** * Callback method to be invoked while the list view or grid view is being scrolled. If the * view is being scrolled, this method will be called before the next frame of the scroll is * rendered. In particular, it will be called before any calls to * {@link Adapter#getView(int, View, ViewGroup)}. * * @param view The view whose scroll state is being reported * * @param scrollState The current scroll state. One of {@link #SCROLL_STATE_IDLE}, * {@link #SCROLL_STATE_TOUCH_SCROLL} or {@link #SCROLL_STATE_IDLE}. */ public void onScrollStateChanged(AbsListView view, int scrollState); /** * Callback method to be invoked when the list or grid has been scrolled. This will be * called after the scroll has completed * @param view The view whose scroll state is being reported * @param firstVisibleItem the index of the first visible cell (ignore if * visibleItemCount == 0) * @param visibleItemCount the number of visible cells * @param totalItemCount the number of items in the list adaptor */ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount);
package com.nico.listviewload; import java.util.ArrayList; import java.util.List; import com.nico.bean.MsgInfo; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.AbsListView.OnScrollListener; public class MainActivity extends Activity { List<MsgInfo> infoList = null; private LayoutInflater inflater = null; private ListView listview = null; private myAdapter adapter = null; private LinearLayout ftview = null; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: adapter.notifyDataSetChanged(); try { Thread.sleep(2000l); } catch (InterruptedException e) { e.printStackTrace(); } setAdapter(); break; } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); inflater = this.getLayoutInflater(); listview = (ListView) findViewById(R.id.listview); ftview = (LinearLayout) inflater.inflate(R.layout.ftview, null); listview.addFooterView(ftview, null, false); listview.setAdapter(new myAdapter()); adapter = new myAdapter(); ftview.setVisibility(View.VISIBLE); listview.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == SCROLL_STATE_IDLE && view.getLastVisiblePosition() == view.getCount() - 1) { handler.sendEmptyMessage(1); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); } public List<MsgInfo> getList() { List<MsgInfo> infoList = new ArrayList<MsgInfo>(); for (int i = 0; i < 7; i++) { MsgInfo info = new MsgInfo(); info.id = i; info.detailinfo = "这是第" + i + "条信息"; info.name = "第" + i + "项"; info.size = 1024 * i; infoList.add(info); } return infoList; } public void setData() { infoList = getList(); } public void setAdapter() { for (int i = 0; i < 7; i++) { MsgInfo info = new MsgInfo(); info.id = i; info.detailinfo = "这是第" + i + "条信息"; info.name = "第" + i + "项"; info.size = 1024 * i; infoList.add(info); } adapter.notifyDataSetChanged(); } public class myAdapter extends BaseAdapter { @Override public void notifyDataSetChanged() { if(ftview.getVisibility()==View.VISIBLE) { ftview.setVisibility(View.GONE); } else if(ftview.getVisibility()==View.GONE) { ftview.setVisibility(View.VISIBLE); } super.notifyDataSetChanged(); } TextView name, detail, size; public myAdapter() { setData(); } @Override public int getCount() { return infoList.size(); } @Override public Object getItem(int position) { return infoList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.item, null, false); } name = (TextView) convertView.findViewById(R.id.name); detail = (TextView) convertView.findViewById(R.id.detail); size = (TextView) convertView.findViewById(R.id.size); name.setText(infoList.get(position).name); detail.setText(infoList.get(position).detailinfo); size.setText(infoList.get(position).size + ""); return convertView; } } public class LoadAsyTask extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... params) { for (int i = 0; i < 7; i++) { MsgInfo info = new MsgInfo(); info.id = i; info.detailinfo = "这是第" + i + "条信息"; info.name = "第" + i + "项"; info.size = 1024 * i; infoList.add(info); } return null; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); ftview.setVisibility(View.GONE); adapter.notifyDataSetChanged(); } } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="fill_parent" android:gravity="center_horizontal" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"> <ImageView android:layout_width="50dip" android:layout_height="50dip" android:src="@drawable/progressbar" android:id="@+id/pbdrawable" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请稍后..." android:id="@+id/pbtxt" /> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360"> <shape android:shape="ring" android:innerRadiusRatio="3" android:thicknessRatio="8" android:useLevel="false"> <gradient android:type="sweep" android:useLevel="false" android:startColor="#000000" android:centerColor="#FFFFFF" android:centerY="0.50" android:endColor="#000000" /> </shape> </rotate>
发表评论
-
jar包混淆
2016-09-18 16:46 1125开发过程中需要把相关功能打成jar包供别人调用,如果不混淆的话 ... -
项目从eclipse移植到studio中遇到的问题整理
2016-09-13 17:42 1165概念 eclipse workspace ---> ... -
ViewGroup&View&Activity onInterceptTouchEvent&dispatchTouchEvent&onTouch整理
2016-08-03 22:26 672一直对这块的知识一知 ... -
仿京东android客户端收件地址选择
2016-07-12 18:07 6511纯手写,可能有些问题,功能已实现 activity pac ... -
FragmentActivity中资源被回收,导致页面fragment错乱的问题
2016-06-07 13:59 3859开发过程中,页面使用fragmentactivity,可能会遇 ... -
android 通过eclipse mat来监测应用内存
2016-02-03 13:02 011dasdasdas -
【转】详解ViewPager调用FragmentPagerAdapter.notifyDataSetChanged()不能更新Fragment
2016-01-30 13:27 2050转载自 http://www.blog4app.com/?p= ... -
startActivityForResult常用使用方式
2015-04-24 11:58 1713示例 初始Activity启动目标activity,并带上了请 ... -
在android4.4以上版本 第三方应用处理短信的疑惑
2015-03-31 16:14 1030最近有个处理android手机短信的需求,需要删除本地某指定短 ... -
Beacon的入门相关知识整理(关于android开发)
2014-10-27 16:53 0To do.... -
[转]常用Github项目类库
2014-09-18 09:29 1793【转自】http://blog.csdn.net/jabony ... -
android适配多分辨率的小技巧
2014-09-05 18:10 2815android多分辨率适配其实是老生常谈的话了,今天再拿出来炒 ... -
android通过自定义schame和host来启动app
2014-08-15 15:02 2168很多时候,我们可以看到在web页面中点击链接,可以直接启动ap ... -
基础知识整理
2014-08-08 17:50 0onTouch(MotionEvent event) eve ... -
android view的缩放平移简单实现
2014-07-22 16:20 16356参考了下网上一些实现 主要是通过matrix实现的 用到的 ... -
android 应用实现微信好友或朋友圈分享
2014-07-18 16:44 60439官方的文档连接:https://open.weixin.qq. ... -
android 自定义view支持gif格式播放
2014-07-16 18:38 4162前段时间做了个项目,有播放gif的需求, 而android展示 ... -
android中自定义attr,以及style杂谈
2014-06-05 18:12 13754attr 属性 style 样式 二者都是在res/value ... -
ViewGroup中的onInterceptTouchEvent和onTouchEvent调用时序
2014-05-20 11:20 1161最近在做android类似slidemenu项目,遇到了scr ... -
获取手机网络状态的代码
2014-03-27 16:45 1295之前网上有人使用方法判断手机网络状态代码如下: Co ...
相关推荐
总之,Android中的ListView下拉刷新和上拉加载更多是提高用户交互体验的重要功能。通过SwipeRefreshLayout和自定义Adapter,开发者可以轻松地将这些功能集成到自己的应用程序中。理解并熟练掌握这两项技术对于...
在本Demo中,我们看到文件名“下拉刷新(自定义listview)CustomListView”,这表明它采用的就是自定义方式。这种方式需要开发者编写额外的布局和逻辑代码,以监听用户的滑动事件并处理刷新动作。 1. **自定义头部...
总的来说,"横向滑动ListView包括Demo"是一个宝贵的教育资源,可以帮助Android开发者扩展他们的技能,实现更具创新性的界面设计。通过深入研究和理解提供的源码,开发者不仅可以学会如何创建横向滑动的ListView,还...
"最简单可用listview上拉刷新下拉加载demo"就是这样一个示例项目,它为初学者提供了实现这两个功能的基础模板。 1. **上拉刷新(Pull-to-Refresh)** 上拉刷新功能允许用户通过在ListView底部向上滑动来获取更新的...
总结,"androidListView下拉刷新Demo"是一个典型的Android开发实践,涉及到Android UI组件的交互、事件监听、数据加载以及第三方库的使用。通过这样的示例,开发者可以学习如何增强ListView的功能,提供更优的用户...
这个"水平ListView小demo"是为初学者设计的一个实例,可以帮助他们理解如何在Android应用中实现这种特殊布局。 首先,要创建一个水平ListView,我们需要使用Android的`RecyclerView`组件,而不是传统的`ListView`。...
在这个"ListView底部加载更多demo"中,开发者可能会提供一个简单的数据模型(如User或Article),一个自定义Adapter,一个包含滚动监听器的Activity或Fragment,以及用于加载数据的辅助类。通过分析和学习这个demo,...
这个压缩包"安卓listview相关相关-listview滑动到底部自动加载数据并显示滚动的底部的那个条目点击按钮回到顶部.zip"主要包含了一个实现特定功能的ListView的示例。下面我们将详细探讨这些知识点。 1. **ListView的...
在Android开发中,下拉刷新和上拉加载是常见的用户交互功能,特别是在列表视图(ListView)中。这种设计能够提升用户体验,使用户无需离开当前界面就能获取更多数据。本教程将详细介绍如何在Android中实现这样的功能。...
10. **下拉刷新和上拉加载**:在现代Android应用中,为了提供更好的用户体验,ListView通常会集成SwipeRefreshLayout实现下拉刷新功能,同时结合 Footers 实现上拉加载更多的数据。 综上所述,"android listview ...
在Android应用开发中,ListView是常用...通过深入研究和实践这个"Android应用源码 ListView下拉刷新 Demo"项目,开发者可以更好地理解和掌握如何在Android应用中实现在ListView上的下拉刷新功能,提升应用的用户体验。
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据集合,并且支持滚动操作。本教程通过一个名为"ListApp"的示例项目,详细介绍了如何在Android中使用ListView来构建用户界面并实现基本的功能。 ...
综上所述,实现"Android listView下拉刷新效果demo"涉及到Android UI设计、触摸事件处理、数据加载和异步操作等多个方面,通过自定义或者使用第三方库可以方便地在应用中集成这一特性,提升应用的交互体验。
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。然而,为了提供更好的用户体验...通过学习和研究这个Demo,开发者可以深入理解Android ListView与数据加载的交互机制,提升自己的应用开发技能。
综上所述,"listview 下拉加载demo"是关于在ListView中实现下拉加载功能的一种实例,它涉及到滚动事件监听、数据加载、UI更新等多个关键环节,是Android开发中提高应用性能和用户体验的重要技术之一。通过理解和实践...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。...记住,良好的用户体验在于细节,所以在实际开发中,还需要关注滑动流畅度、加载状态提示等细节问题,以打造一个完善的下拉刷新ListView。
这个Demo中可能还会包含自定义适配器(Adapter)的实现,以便将数据绑定到ListView的各个Item上。适配器通常需要继承自BaseAdapter或者使用已有的诸如ArrayAdapter、CursorAdapter等,根据实际需求选择合适的类型。 ...
在Android开发中,ListView是广泛使用的控件,用于展示大量数据列表。本教程将深入讲解如何监听ListView的上下滑动事件,并实现下拉刷新、上拉加载以及一键置顶的功能。 首先,我们要理解ListView的工作原理。...
"listview滑动显示球最简demo"是一个示例项目,它演示了如何在ListView滚动时动态显示小球效果,这种效果常用于加载指示或者提示用户还有更多内容可以滑动查看。这种功能能够提升用户体验,增加应用的交互性和趣味性...
在Android SDK中,已有HorizontalScrollView和HorizontalGridView可以实现横向滚动,但它们的功能相对有限,无法像ListView那样动态加载和管理大量数据。因此,自定义实现横向ListView能提供更高的灵活性和定制化。...