栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(二)

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(二)

上篇文章给大家介绍了新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(一),需要了解的朋友可以点击了解详情。

这是PullZoomView在ScrollView实现,Android PullZoomView在ScrollView的实现是:PullToZoomScrollViewEx

下载地址:https://github.com/Frank-Zhu/PullZoomView

本文要说的PullToZoomScrollViewEx则以另外一种方式在Java代码中动态的为PullZoomView装载View:

private void loadViewForPullToZoomScrollView(PullToZoomScrollViewEx scrollView) {
  View headView = LayoutInflater.from(this).inflate(R.layout.head_view, null);
  View zoomView = LayoutInflater.from(this).inflate(R.layout.head_zoom_view, null);
  View contentView = LayoutInflater.from(this).inflate(R.layout.content_view, null);
  scrollView.setHeaderView(headView);
  scrollView.setZoomView(zoomView);
  scrollView.setScrollContentView(contentView);
 } 

两点内容需要注意:

(1)所有Android PullZoomView的头部及缩放效果都可以关闭或者开启,具体方式就是通过改变设置各种方法的true或false值。以下是比较重要的几个方法:

setParallax(boolean b);

true则有视差效果,false则无。

setHideHeader(boolean b);

true则隐藏自己定义的head view,false则显示。

setZoomEnabled(boolean b);
true支持缩放,false不支持缩放。

默认的,

setParallax(true);
setHideHeader(false);
setZoomEnabled(true);

(2)PullZoomView中嵌套的子View,需要通过getPullRootView().findViewById(R.id.xxxx)这样的方式找出来,而不是直接的findViewById()。

下面给出一个完整例子加以说明。

先写一个布局:

 
  
  

Java代码:

 package com.zzw.testpullzoomview_scrollview;
 import com.ecloud.pulltozoomview.PullToZoomScrollViewEx;
 import android.app.Activity;
 import android.os.Bundle;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.LinearLayout;
 public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   // 注意初始化顺序,不要弄乱,否则抛出运行时空指针
   PullToZoomScrollViewEx scrollView = (PullToZoomScrollViewEx) findViewById(R.id.scroll_view);
   loadViewForPullToZoomScrollView(scrollView);
   scrollView.getPullRootView().findViewById(R.id.tv_test).setonClickListener(new View.onClickListener() {
    @Override
    public void onClick(View v) {
     Log.d("PullToZoomScrollViewEx", "onClick");
    }
   });
   scrollView.getPullRootView().findViewById(R.id.tv_test).setonClickListener(new View.onClickListener() {
    @Override
    public void onClick(View v) {
     Log.e("PullToZoomScrollViewEx", "onClick");
    }
   });
   scrollView.getPullRootView().findViewById(R.id.tv_test).setonClickListener(new View.onClickListener() {
    @Override
    public void onClick(View v) {
     Log.d("PullToZoomScrollViewEx", "onClick");
    }
   });
   setPullToZoomViewLayoutParams(scrollView);
  }
  private void loadViewForPullToZoomScrollView(PullToZoomScrollViewEx scrollView) {
   View headView = LayoutInflater.from(this).inflate(R.layout.head_view, null);
   View zoomView = LayoutInflater.from(this).inflate(R.layout.head_zoom_view, null);
   View contentView = LayoutInflater.from(this).inflate(R.layout.content_view, null);
   scrollView.setHeaderView(headView);
   scrollView.setZoomView(zoomView);
   scrollView.setScrollContentView(contentView);
  }
  // 设置头部的View的宽高。
  private void setPullToZoomViewLayoutParams(PullToZoomScrollViewEx scrollView) {
   DisplayMetrics localDisplayMetrics = new DisplayMetrics();
   getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
   int mScreenHeight = localDisplayMetrics.heightPixels;
   int mScreenWidth = localDisplayMetrics.widthPixels;
   LinearLayout.LayoutParams localObject = new LinearLayout.LayoutParams(mScreenWidth,
     (int) (.F * (mScreenWidth / .F)));
   scrollView.setHeaderLayoutParams(localObject);
  }
 } 

 java代码需要的子布局:

head_view.xml:

 
  
  
  
   
   
  
  

head_zoom_view.xml:

 
  

head_zoom_view其实就放了一张可供缩放拉伸的图片。

content_view.xml:

 
 
  
  
  
  
  
  
  
  
  
  
  
  

实际开发中,如果确定要用ScrollView包括自己项目中的子View,那么content_view.xml就是其他View的装载“父”布局。重点需要在content_view.xml中展开。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/163888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号