ListView中条目指定位置停留和动画效果
来源:互联网 发布:淳萃洗发水 知乎 编辑:程序博客网 时间:2024/06/16 23:19
最近查看主流app练习时遇到了个挺蛋疼的布局实现,一个可以上下滑动布局滑动到指定条目时,这个条目在顶部停下来下面的条目还可以继续滑动,于是照猫画虎的自己写了个实现,当指定一个位置停留时想清除了需求其实很简单,当条目位置确定是置顶后用另一个长相相同和这个条目相同的View覆盖就可以了.毕竟小弟刚学,对自定义控件不是特别熟练,就用了个特简单的方法实现.//布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:id="@+id/lv_demo"android:layout_width="match_parent"android:layout_height="wrap_content"/><TextViewandroid:background="#fff"android:id="@+id/tv_listdemo"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="条目1"android:visibility="invisible"/></RelativeLayout>import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.View;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.Animation.AnimationListener;import android.view.animation.TranslateAnimation;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;public class ListViewDemo extends Activity {private ListView lv;private List<String> list;private TextView tv_demo;private MyBaseAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.listdemo);initView();initData();initLinter();}/*** 监听* */private void initLinter() {//滑动监听lv.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stub}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {//当出现在指定位置为1时显示出来if(firstVisibleItem==1){tv_demo.setVisibility(View.VISIBLE);}else if(firstVisibleItem<1){tv_demo.setVisibility(View.GONE);}}});//条目监听lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {int id2 = lv.getSelectedItemPosition();System.out.println(id2);if(position>1){//过时的方法//int i = getWindowManager().getDefaultDisplay().getWidth();//替代方法:通过获取分辨率信息来过去宽度DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);int i = metrics.widthPixels;//从左侧移动到最右侧TranslateAnimation animation = new TranslateAnimation(0, i, 0, 0);animation.setDuration(500);view.startAnimation(animation);final int state = position;//动画监听animation.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationRepeat(Animation animation) {// TODO Auto-generated method stub}//动画结束@Overridepublic void onAnimationEnd(Animation animation) {//删除选定条目list.remove(list.get(state));//更新填充adapter.notifyDataSetChanged();}});}}});}/*** 数据填充* */private void initData() {list = new ArrayList<String>();for (int i = 0; i < 50; i++) {list.add("条目"+i);}adapter = new MyBaseAdapter(list);lv.setAdapter(adapter);}/*** 数据初始化* */private void initView() {lv = (ListView) findViewById(R.id.lv_demo);tv_demo = (TextView) findViewById(R.id.tv_listdemo);}class MyBaseAdapter extends BaseAdapter{private List<String> list;public MyBaseAdapter(List<String> list) {this.list = list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if(convertView==null){convertView = View.inflate(ListViewDemo.this, R.layout.item_lv_main, null);}TextView view = (TextView) convertView.findViewById(R.id.tv_item);view.setText(list.get(position));return convertView;}}}
0 0
- ListView中条目指定位置停留和动画效果
- Listview跳到指定条目位置(条目)
- Android 自定义Dialog并指定其显示位置和动画效果
- listview和imageview实现条目单选效果
- listview和imageview实现条目单选效果
- android 自定义TextView,内容指定位置滚动动画效果
- ListView中item删除动画效果
- listview中 对adapter添加动画效果
- ListView中item删除动画效果
- 删除listview中itme的动画效果
- 在ListView中实现动画效果
- ListView滚动指定位置
- Android中给listview/gridview设置动画(逐条加载条目动画)
- Android中给listview/gridview设置动画(逐条加载条目动画)
- Android中给listview/gridview设置动画(逐条加载条目动画)
- Android中给listview/gridview设置动画(逐条加载条目动画)
- Android中listview中条目及控件点击事件position位置不对
- 定位ListView到指定的某一个条目
- Pixhawk之姿态解算篇(4)_补充篇
- python 定时执行脚本,通过设置定时任务执行python 脚本
- day1
- mybatis 个人笔记
- 使用Spring Security保护web应用安全
- ListView中条目指定位置停留和动画效果
- ZOJ 3780 - Paint the Grid Again
- jQuery源码解读一
- Unity 单例与实例的区别
- CentOS vim插件——Doxygen注释插件(用命令生成各种注释)
- FOJ Problem 2214 Knapsack problem
- 霍夫曼编码和解码
- 1094. The Largest Generation (25)
- xpath对XML进行模糊查询