寻宝poi界面展示
This commit is contained in:
@@ -21,6 +21,7 @@ import com.navinfo.outdoor.fragment.MineFragment;
|
||||
import com.navinfo.outdoor.fragment.PoiFragment;
|
||||
import com.navinfo.outdoor.fragment.PrivilegeFragment;
|
||||
import com.navinfo.outdoor.fragment.RecordFragment;
|
||||
import com.navinfo.outdoor.fragment.RoadFragment;
|
||||
import com.navinfo.outdoor.fragment.SetFragment;
|
||||
import com.navinfo.outdoor.fragment.TaskExWebFragment;
|
||||
import com.navinfo.outdoor.fragment.TaskExplainFragment;
|
||||
@@ -30,7 +31,6 @@ import com.navinfo.outdoor.fragment.TaskPrefectureFragment;
|
||||
import com.navinfo.outdoor.fragment.RegisterFragment;
|
||||
import com.navinfo.outdoor.fragment.TreasureFragment;
|
||||
import com.navinfo.outdoor.fragment.UserAttestationFragment;
|
||||
import com.navinfo.outdoor.fragment.RoadFragment;
|
||||
import com.navinfo.outdoor.fragment.WithdrawFragment;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.navinfo.outdoor.fragment.WithdrawalRecordFragment;
|
||||
|
||||
@@ -176,6 +176,7 @@ public class UserActivity extends BaseActivity implements View.OnClickListener {
|
||||
Toast.makeText(UserActivity.this, region_id, Toast.LENGTH_SHORT).show();
|
||||
String tx = opt1tx + " " + opt2tx + " " + opt3tx;
|
||||
region.setText(tx);
|
||||
|
||||
}
|
||||
}).setSubmitText("确定")//确定按钮文字
|
||||
.setCancelText("取消")//取消按钮文字
|
||||
@@ -242,10 +243,12 @@ public class UserActivity extends BaseActivity implements View.OnClickListener {
|
||||
Province_AreaList.add(City_AreaList);//添加该省所有地区数据
|
||||
city_AreaList.add(AreaList);//添加该省所有地区数据的bean
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加城市数据
|
||||
*/
|
||||
options2Items.add(CityList);
|
||||
|
||||
/**
|
||||
* 添加地区数据
|
||||
*/
|
||||
|
||||
@@ -1,64 +1,108 @@
|
||||
package com.navinfo.outdoor.fragment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.base.BaseFragment;
|
||||
import com.tencent.tencentmap.mapsdk.maps.MapView;
|
||||
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
/**
|
||||
* 寻宝-点击上传弹窗点击poi
|
||||
* 记录的Fragment
|
||||
* 2021-5-25
|
||||
*/
|
||||
public class PoiFragment extends Fragment {
|
||||
public class PoiFragment extends BaseFragment implements View.OnClickListener {
|
||||
|
||||
// TODO: Rename parameter arguments, choose names that match
|
||||
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||
private static final String ARG_PARAM1 = "param1";
|
||||
private static final String ARG_PARAM2 = "param2";
|
||||
private EditText editDescribe;
|
||||
private ImageView imagePanorama;
|
||||
private ImageView imageName;
|
||||
private ImageView imageInternalPhotos;
|
||||
private ImageView imageCard;
|
||||
private ImageView imageElse;
|
||||
|
||||
// TODO: Rename and change types of parameters
|
||||
private String mParam1;
|
||||
private String mParam2;
|
||||
|
||||
public PoiFragment() {
|
||||
// Required empty public constructor
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
return R.layout.poi_fragment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this factory method to create a new instance of
|
||||
* this fragment using the provided parameters.
|
||||
*
|
||||
* @param param1 Parameter 1.
|
||||
* @param param2 Parameter 2.
|
||||
* @return A new instance of fragment PoiFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static PoiFragment newInstance(String param1, String param2) {
|
||||
PoiFragment fragment = new PoiFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
editDescribe = findViewById(R.id.edit_describe);
|
||||
imagePanorama = findViewById(R.id.image_panorama);
|
||||
imagePanorama.setOnClickListener(this::onClick);
|
||||
imageName = findViewById(R.id.image_name);
|
||||
imageName.setOnClickListener(this::onClick);
|
||||
imageInternalPhotos = findViewById(R.id.image_internal_photos);
|
||||
imageInternalPhotos.setOnClickListener(this::onClick);
|
||||
imageCard = findViewById(R.id.image_card);
|
||||
imageCard.setOnClickListener(this::onClick);
|
||||
imageElse = findViewById(R.id.image_else);
|
||||
imageElse.setOnClickListener(this::onClick);
|
||||
}
|
||||
@Override
|
||||
protected void initData() {
|
||||
super.initData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()){
|
||||
case R.id.image_panorama:
|
||||
Intent intentPanorama = new Intent("android.media.action.IMAGE_CAPTURE");
|
||||
startActivityForResult(intentPanorama, 101);
|
||||
break;
|
||||
case R.id.image_name:
|
||||
Intent intentName = new Intent("android.media.action.IMAGE_CAPTURE");
|
||||
startActivityForResult(intentName, 102);
|
||||
break;
|
||||
case R.id.image_internal_photos:
|
||||
Intent intentInternal = new Intent("android.media.action.IMAGE_CAPTURE");
|
||||
startActivityForResult(intentInternal, 103);
|
||||
break;
|
||||
case R.id.image_card:
|
||||
Intent intentCard = new Intent("android.media.action.IMAGE_CAPTURE");
|
||||
startActivityForResult(intentCard, 104);
|
||||
break;
|
||||
case R.id.image_else:
|
||||
Intent intentElse = new Intent("android.media.action.IMAGE_CAPTURE");
|
||||
startActivityForResult(intentElse, 105);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
return inflater.inflate(R.layout.fragment_poi, container, false);
|
||||
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == 101 && resultCode == RESULT_OK) {
|
||||
Bundle extras = data.getExtras();//从Intent中获取附加值
|
||||
Bitmap bitmap = (Bitmap) extras.get("data");//从附加值中获取返回的图像
|
||||
imagePanorama.setImageBitmap(bitmap);//显示图像
|
||||
} else if (requestCode == 102 && resultCode == RESULT_OK) {
|
||||
Bundle extras = data.getExtras();//从Intent中获取附加值
|
||||
Bitmap bitmap = (Bitmap) extras.get("data");//从附加值中获取返回的图像
|
||||
imageName.setImageBitmap(bitmap);//显示图像
|
||||
}else if (requestCode == 103 && resultCode == RESULT_OK) {
|
||||
Bundle extras = data.getExtras();//从Intent中获取附加值
|
||||
Bitmap bitmap = (Bitmap) extras.get("data");//从附加值中获取返回的图像
|
||||
imageInternalPhotos.setImageBitmap(bitmap);//显示图像
|
||||
}else if (requestCode == 104 && resultCode == RESULT_OK) {
|
||||
Bundle extras = data.getExtras();//从Intent中获取附加值
|
||||
Bitmap bitmap = (Bitmap) extras.get("data");//从附加值中获取返回的图像
|
||||
imageCard.setImageBitmap(bitmap);//显示图像
|
||||
}else if (requestCode == 105 && resultCode == RESULT_OK) {
|
||||
Bundle extras = data.getExtras();//从Intent中获取附加值
|
||||
Bitmap bitmap = (Bitmap) extras.get("data");//从附加值中获取返回的图像
|
||||
imageElse.setImageBitmap(bitmap);//显示图像
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,16 @@ import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.kongzue.dialog.util.DialogSettings;
|
||||
import com.kongzue.dialog.v3.ShareDialog;
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.activity.FragmentManagement;
|
||||
import com.navinfo.outdoor.api.Constant;
|
||||
@@ -44,6 +48,9 @@ import com.tencent.tencentmap.mapsdk.maps.model.CameraPosition;
|
||||
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
|
||||
import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.lzy.okgo.utils.HttpUtils.runOnUiThread;
|
||||
|
||||
/**
|
||||
@@ -61,6 +68,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
private MyLocationStyle locationStyle;
|
||||
private OnLocationChangedListener locationChangedListener;
|
||||
private ImageView ivLocation;
|
||||
private ImageView ivSubmit;
|
||||
private ImageView ivRefish;
|
||||
|
||||
@Override
|
||||
@@ -73,6 +81,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
super.initView();
|
||||
ivRefish = findViewById(R.id.iv_refrish);
|
||||
ivRefish.setOnClickListener(this::onClick);
|
||||
ivSubmit = findViewById(R.id.iv_submit);
|
||||
ivSubmit.setOnClickListener(this::onClick);
|
||||
treasureMap = (MapView) findViewById(R.id.treasure_map);
|
||||
tencentMap = treasureMap.getMap();
|
||||
cbMapType = (CheckBox) findViewById(R.id.cb_map_type);
|
||||
@@ -207,19 +217,53 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
tencentMap.animateCamera(cameraUpdateOut);
|
||||
break;
|
||||
case R.id.iv_location://定位:
|
||||
Constant.currentLocation.getLongitude();
|
||||
CameraUpdate cameraSigma =
|
||||
CameraUpdateFactory.newCameraPosition(new CameraPosition(
|
||||
new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude()), //中心点坐标,地图目标经纬度
|
||||
19, //目标缩放级别
|
||||
0, //目标倾斜角[0.0 ~ 45.0] (垂直地图时为0)
|
||||
0)); //目标旋转角 0~360° (正北方为0)
|
||||
tencentMap.animateCamera(cameraSigma);
|
||||
if (Constant.currentLocation!=null){
|
||||
Constant.currentLocation.getLongitude();
|
||||
CameraUpdate cameraSigma =
|
||||
CameraUpdateFactory.newCameraPosition(new CameraPosition(
|
||||
new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude()), //中心点坐标,地图目标经纬度
|
||||
19, //目标缩放级别
|
||||
0, //目标倾斜角[0.0 ~ 45.0] (垂直地图时为0)
|
||||
0)); //目标旋转角 0~360° (正北方为0)
|
||||
tencentMap.animateCamera(cameraSigma);
|
||||
}else {
|
||||
Toast.makeText(getActivity(), "无定位", Toast.LENGTH_SHORT).show();
|
||||
checkNetWork();
|
||||
}
|
||||
|
||||
break;
|
||||
case R.id.iv_refrish://
|
||||
Intent road = new Intent(getActivity(), FragmentManagement.class);
|
||||
road.putExtra("tag",28);
|
||||
startActivity(road);
|
||||
case R.id.iv_submit://弹窗
|
||||
//分享
|
||||
CharSequence title = "请选择上报类型";
|
||||
List<ShareDialog.Item> itemList = new ArrayList<>();
|
||||
itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_poi, "POI"));
|
||||
itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_road, "道路"));
|
||||
itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_chongdianzhuang, "充电站"));
|
||||
itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_qingbao, "其他"));
|
||||
ShareDialog.show((AppCompatActivity) getActivity(), itemList, new ShareDialog.OnItemClickListener() {
|
||||
@Override
|
||||
public boolean onClick(ShareDialog shareDialog, int index, ShareDialog.Item item) {
|
||||
switch (index){
|
||||
case 0:
|
||||
Intent poiIntent = new Intent(getActivity(), FragmentManagement.class);
|
||||
poiIntent.putExtra("tag",27);
|
||||
startActivity(poiIntent);
|
||||
break;
|
||||
case 1:
|
||||
Intent roadIntent = new Intent(getActivity(), FragmentManagement.class);
|
||||
roadIntent.putExtra("tag",28);
|
||||
startActivity(roadIntent);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
Toast.makeText(getContext(), item.getText(), Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}).setTitle(title);
|
||||
break;
|
||||
case R.id.iv_refrish:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -257,7 +301,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
requestPermissions(permission, 0);
|
||||
} else {
|
||||
// 此处为某些5.0动态权限的手机
|
||||
//goSystemLocationActivity(); // TODO =======待删除======
|
||||
// goSystemLocationActivity(); // TODO =======待删除======
|
||||
tipPermissionAlertDialog();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
package com.navinfo.outdoor.util;
|
||||
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
import android.widget.ScrollView;
|
||||
|
||||
/**
|
||||
* 注意使用的时候需要放大的view,一般是第一个RelativeLayout或者LinearLayout。要加上 android:layout_gravity="center_horizontal"
|
||||
|
||||
*/
|
||||
|
||||
public class BounceZoomScrollView extends ScrollView {
|
||||
|
||||
private static final String TAG = "BounceScrollView";
|
||||
|
||||
|
||||
//----头部收缩属性--------
|
||||
|
||||
// 记录首次按下位置
|
||||
private float mFirstPosition = 0;
|
||||
// 头部图片是否正在放大
|
||||
private Boolean mScaling = false;
|
||||
private View dropZoomView;//需要被放大的view
|
||||
private int dropZoomViewWidth;
|
||||
private int dropZoomViewHeight;
|
||||
//----头部收缩属性end--------
|
||||
|
||||
//------尾部收缩属性--------
|
||||
private View inner;// 子View
|
||||
private float y;// 点击时y坐标
|
||||
private Rect normal = new Rect();// 矩形(这里只是个形式,只是用于判断是否需要动画.)
|
||||
|
||||
private boolean isCount = false;// 是否开始计算
|
||||
//最后的坐标
|
||||
private float lastX = 0;
|
||||
private float lastY = 0;
|
||||
//当前坐标
|
||||
private float currentX = 0;
|
||||
private float currentY = 0;
|
||||
//移动的坐标量
|
||||
private float distanceX = 0;
|
||||
private float distanceY = 0;
|
||||
private boolean upDownSlide = false; //判断上下滑动的flag
|
||||
//------尾部收缩属性end--------
|
||||
|
||||
public BounceZoomScrollView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
//初始化
|
||||
private void init() {
|
||||
setOverScrollMode(OVER_SCROLL_NEVER);
|
||||
|
||||
if (getChildAt(0) != null) {
|
||||
inner = getChildAt(0);//这个是底部收缩的view
|
||||
|
||||
//头部收缩的
|
||||
ViewGroup vg = (ViewGroup) getChildAt(0);
|
||||
if (vg.getChildAt(0) != null) {
|
||||
dropZoomView = vg.getChildAt(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* 生成视图工作完成.该函数在生成视图的最后调用,在所有子视图添加完之后. 即使子类覆盖了 onFinishInflate
|
||||
* 方法,也应该调用父类的方法,使该方法得以执行.
|
||||
*/
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
//初始化
|
||||
init();
|
||||
super.onFinishInflate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||
|
||||
//这里只是计算尾部坐标
|
||||
currentX = ev.getX();
|
||||
currentY = ev.getY();
|
||||
switch (ev.getAction()) {
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
distanceX = currentX - lastX;
|
||||
distanceY = currentY - lastY;
|
||||
if (Math.abs(distanceX) < Math.abs(distanceY) && Math.abs(distanceY) > 12) {
|
||||
upDownSlide = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
lastX = currentX;
|
||||
lastY = currentY;
|
||||
if (upDownSlide && inner != null) commOnTouchEvent(ev);
|
||||
return super.dispatchTouchEvent(ev);
|
||||
}
|
||||
|
||||
/***
|
||||
* 触摸事件
|
||||
*
|
||||
* @param ev
|
||||
*/
|
||||
public void commOnTouchEvent(MotionEvent ev) {
|
||||
|
||||
//头部缩放计算
|
||||
if (dropZoomViewWidth <= 0 || dropZoomViewHeight <= 0) {
|
||||
dropZoomViewWidth = dropZoomView.getMeasuredWidth();
|
||||
dropZoomViewHeight = dropZoomView.getMeasuredHeight();
|
||||
}
|
||||
|
||||
switch (ev.getAction()) {
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
//手指离开后头部恢复图片
|
||||
mScaling = false;
|
||||
replyImage();
|
||||
|
||||
// 手指松开尾部恢复
|
||||
if (isNeedAnimation()) {
|
||||
animation();
|
||||
isCount = false;
|
||||
}
|
||||
clear0();
|
||||
break;
|
||||
|
||||
//这里头尾分开处理,互不干扰
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
//尾部处理
|
||||
final float preY = y;// 按下时的y坐标
|
||||
float nowY = ev.getY();// 时时y坐标
|
||||
int deltaY = (int) (preY - nowY);// 滑动距离
|
||||
if (!isCount) {
|
||||
deltaY = 0; // 在这里要归0.
|
||||
}
|
||||
y = nowY;
|
||||
// 当滚动到最上或者最下时就不会再滚动,这时移动布局
|
||||
if (isNeedMove()) {
|
||||
// 初始化头部矩形
|
||||
if (normal.isEmpty()) {
|
||||
// 保存正常的布局位置
|
||||
normal.set(inner.getLeft(), inner.getTop(),
|
||||
inner.getRight(), inner.getBottom());
|
||||
}
|
||||
// 移动布局
|
||||
inner.layout(inner.getLeft(), inner.getTop() - deltaY / 2,
|
||||
inner.getRight(), inner.getBottom() - deltaY / 2);
|
||||
}
|
||||
isCount = true;
|
||||
//尾部处理end
|
||||
|
||||
//头部处理
|
||||
if (!mScaling) {
|
||||
if (getScrollY() == 0) {
|
||||
mFirstPosition = ev.getY();// 滚动到顶部时记录位置,否则正常返回
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
int distance = (int) ((ev.getY() - mFirstPosition) * 0.6); // 滚动距离乘以一个系数
|
||||
if (distance < 0) { // 当前位置比记录位置要小,正常返回
|
||||
break;
|
||||
}
|
||||
// 处理放大
|
||||
mScaling = true;
|
||||
setZoom(1 + distance);
|
||||
//头部处理end
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* 回缩动画,尾部往下缩动画
|
||||
*/
|
||||
public void animation() {
|
||||
// 开启移动动画
|
||||
TranslateAnimation ta = new TranslateAnimation(0, 0, inner.getTop(),
|
||||
normal.top);
|
||||
ta.setDuration(200);
|
||||
inner.startAnimation(ta);
|
||||
// 设置回到正常的布局位置
|
||||
inner.layout(normal.left, normal.top, normal.right, normal.bottom);
|
||||
|
||||
normal.setEmpty();
|
||||
|
||||
}
|
||||
|
||||
// 是否需要开启动画
|
||||
public boolean isNeedAnimation() {
|
||||
return !normal.isEmpty();
|
||||
}
|
||||
|
||||
|
||||
// 回弹动画,header往上缩动画 (使用了属性动画)
|
||||
public void replyImage() {
|
||||
final float distance = dropZoomView.getMeasuredWidth() - dropZoomViewWidth;
|
||||
|
||||
// 设置动画
|
||||
ValueAnimator anim = ObjectAnimator.ofFloat(0.0F, 1.0F).setDuration((long) (distance * 0.7));
|
||||
|
||||
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
|
||||
@Override
|
||||
public void onAnimationUpdate(ValueAnimator animation) {
|
||||
float cVal = (Float) animation.getAnimatedValue();
|
||||
setZoom(distance - ((distance) * cVal));
|
||||
}
|
||||
});
|
||||
anim.start();
|
||||
|
||||
}
|
||||
|
||||
//头部缩放
|
||||
public void setZoom(float s) {
|
||||
if (dropZoomViewHeight <= 0 || dropZoomViewWidth <= 0) {
|
||||
return;
|
||||
}
|
||||
ViewGroup.LayoutParams lp = dropZoomView.getLayoutParams();
|
||||
lp.width = (int) (dropZoomViewWidth + s);
|
||||
lp.height = (int) (dropZoomViewHeight * ((dropZoomViewWidth + s) / dropZoomViewWidth));
|
||||
dropZoomView.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
/***
|
||||
* 是否需要移动布局 inner.getMeasuredHeight():获取的是控件的总高度
|
||||
*
|
||||
* getHeight():获取的是屏幕的高度
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public boolean isNeedMove() {
|
||||
int offset = inner.getMeasuredHeight() - getHeight();
|
||||
int scrollY = getScrollY();
|
||||
// 0是顶部,后面那个是底部
|
||||
if (scrollY == 0 || scrollY == offset) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//清理尾部属性值
|
||||
private void clear0() {
|
||||
lastX = 0;
|
||||
lastY = 0;
|
||||
distanceX = 0;
|
||||
distanceY = 0;
|
||||
upDownSlide = false;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user