Android ListView头部随着上下拖动缩放
来源:互联网 发布:方舟画质优化 编辑:程序博客网 时间:2024/05/21 09:25
效果图如下:
代码如下:
MainActivity:
public class MainActivity extends Activity { private Button btn_fixed; private Button btn_scale; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); btn_fixed = (Button) findViewById(R.id.btn_one); btn_scale = (Button) findViewById(R.id.btn_two); btn_fixed.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent fixIntent = new Intent(MainActivity.this,FixedActivity.class); startActivity(fixIntent); } }); btn_scale.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent fixIntent = new Intent(MainActivity.this,ScaleActivity.class); startActivity(fixIntent); } }); }}
FixedActivity代码:public class FixedActivity extends Activity implements OnScrollListener{ private ListView lv_test; private LinearLayout ll_tt; private TextView tv_shadow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_lv); lv_test = (ListView) findViewById(R.id.lv_test); tv_shadow = (TextView) findViewById(R.id.tv_shadow); View view = LayoutInflater.from(this).inflate(R.layout.lv_test, null); View view2 = LayoutInflater.from(this).inflate(R.layout.item, null); ll_tt = (LinearLayout) view2.findViewById(R.id.ll_tt); lv_test.addHeaderView(view); lv_test.addHeaderView(view2); lv_test.setOnScrollListener(this); lv_test.setAdapter(new MyAdapter()); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return 40; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(FixedActivity.this); tv.setText("listview"+position); return tv; } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @SuppressLint("NewApi") @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int top2 = ll_tt.getTop(); if (top2 <= 0 || firstVisibleItem >= 1 ) { tv_shadow.setVisibility(View.VISIBLE); }else { tv_shadow.setVisibility(View.INVISIBLE); } }}ScaleActivity代码如下:public class ScaleActivity extends Activity implements OnScrollListener{ private ListView lv_test; private LinearLayout ll_tt; private TextView tv; private int top; private float scale = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_lv); lv_test = (ListView) findViewById(R.id.lv_test); View view = LayoutInflater.from(this).inflate(R.layout.lv_test, null); View view2 = LayoutInflater.from(this).inflate(R.layout.item, null); ll_tt = (LinearLayout) view2.findViewById(R.id.ll_tt); tv = (TextView) view2.findViewById(R.id.tv_tt); lv_test.addHeaderView(view); lv_test.addHeaderView(view2); lv_test.setOnScrollListener(this); lv_test.setAdapter(new MyAdapter()); } @Override protected void onResume() { super.onResume(); ViewTreeObserver vto = ll_tt.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { ll_tt.getViewTreeObserver().removeOnGlobalLayoutListener(this); } top = ll_tt.getTop(); scale = (float) scale / (float) top; System.out.println("scale : " + scale); } }); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return 40; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(ScaleActivity.this); tv.setText("listview"+position); return tv; } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int top2 = ll_tt.getTop(); if (top2 >= 0) { tv.setScaleX(top2 * scale); tv.setScaleY(top2 * scale); } }}item代码如下:activity_main代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/btn_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="title固定" /> <Button android:id="@+id/btn_two" android:layout_below="@id/btn_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="title缩放" /></RelativeLayout>activity_lv代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="#ffffffff" tools:context=".MainActivity" > <ListView android:id="@+id/lv_test" android:background="#ffffffff" android:layout_width="fill_parent" android:layout_height="fill_parent" android:divider="@null" android:dividerHeight="0dp" android:scrollbars="none" /> <TextView android:id="@+id/tv_shadow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是测试条目" android:background="#ffffffff" android:visibility="invisible" android:gravity="center"/></RelativeLayout>lv_text代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffffff" android:id="@+id/ll" android:orientation="vertical" > <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="200dp" android:background="@mipmap/widget_autoscroollview_demo_banner1" /></LinearLayout><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/ll_tt" android:orientation="vertical" > <TextView android:id="@+id/tv_tt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是测试条目" android:visibility="visible" android:gravity="center"/></LinearLayout>
0 0
- Android ListView头部随着上下拖动缩放
- 自定义 头部可以缩放listview
- Android:上下拖动切换界面
- android ListView 数据超过一页时,消除拖动产生的上下的黑条
- Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能[转]
- Android Developers:拖动和缩放
- android点击图片缩放、拖动
- Android的图片缩放、拖动
- Android ListView头部视差控件
- Android ListView头部悬浮效果
- Android中ListView添加头部
- android ScrollView--Linearlayout可以上下拖动
- Android中自定上下拖动Viewpager
- Android ListView上下选择,定位
- Android 禁止 ListView 上下滑动
- Qt Quick之ListView单元的上下拖动功能实现
- 我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能
- android开发-图片缩放,拖动功能实现。
- 安卓DisplayMetrics获取屏幕分辨率
- HDFS HA与QJM(Quorum Journal Manager)介绍及官网内容整理
- 终于发布了一个app游戏
- 基于数码管的简单时钟系统
- ubuntu 14.04中打开echo、daytime等标准服务详细实例图解
- Android ListView头部随着上下拖动缩放
- 评测:最有效的PDF在线无损转换免费工具Smallpdf
- 秩1矩阵
- Oracle学习笔记:图形管理工具 EM 的使用
- 3dmax雪景插件(SnowFlow) For Max2012/2014
- 使用Git命令实现代码上传与同步
- 【实际项目】微信相关api调用例子【以分享为例】
- Android线程模型(Painless Threading)
- 关于iOS提交审核的IDFA-2