Commit de89a4c2 by fengquan

feat: 咨询师详情页图片/视频预览调整

parent e31b306e
...@@ -54,7 +54,7 @@ public class BasePhotoFragment extends Fragment { ...@@ -54,7 +54,7 @@ public class BasePhotoFragment extends Fragment {
protected View loading; protected View loading;
protected MySimpleTarget mySimpleTarget; protected MySimpleTarget mySimpleTarget;
protected View btnVideo; protected View btnVideo;
private LinearLayout btnLL; private RelativeLayout btnLL;
private RelativeLayout videoContainer; private RelativeLayout videoContainer;
private IjkVideoView videoView; private IjkVideoView videoView;
private Disposable disposable; private Disposable disposable;
...@@ -166,39 +166,23 @@ public class BasePhotoFragment extends Fragment { ...@@ -166,39 +166,23 @@ public class BasePhotoFragment extends Fragment {
rootView.setDrawingCacheEnabled(false); rootView.setDrawingCacheEnabled(false);
imageView.setDrawingCacheEnabled(false); imageView.setDrawingCacheEnabled(false);
btnLL = view.findViewById(R.id.btnLL); btnLL = view.findViewById(R.id.btnLL);
imageView.setBtnLL(btnLL); imageView.setOnDragListener(new OnDragListener() {
@Override
public void drag() {
((GPreviewActivity) getActivity()).hindView();
}
@Override
public void actionCancel() {
((GPreviewActivity) getActivity()).showView();
}
});
videoContainer = view.findViewById(R.id.videoContainer); videoContainer = view.findViewById(R.id.videoContainer);
videoView = view.findViewById(R.id.videoView); videoView = view.findViewById(R.id.videoView);
seekBar = view.findViewById(R.id.seekbar); seekBar = view.findViewById(R.id.seekbar);
ivPlay = view.findViewById(R.id.ivPlay); ivPlay = view.findViewById(R.id.ivPlay);
ivImg = view.findViewById(R.id.ivImage); ivImg = view.findViewById(R.id.ivImage);
ivBack = view.findViewById(R.id.ivBack);
imageView.setBackIv(ivBack);
ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
transformOutAnim();
((GPreviewActivity) getActivity()).transformOut();
}
});
// btnVideo.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// String video = beanViewInfo.getVideoUrl();
// if (video != null && !video.isEmpty()) {
// if (listener != null) {
// listener.onPlayerVideo(video);
// } else {
// GPVideoPlayerActivity.startActivity(getContext(), video);
// }
// }
//
// }
// });
mySimpleTarget = new MySimpleTarget() { mySimpleTarget = new MySimpleTarget() {
@Override @Override
...@@ -381,7 +365,7 @@ public class BasePhotoFragment extends Fragment { ...@@ -381,7 +365,7 @@ public class BasePhotoFragment extends Fragment {
@Override @Override
public void onPhotoTap(View view, float x, float y) { public void onPhotoTap(View view, float x, float y) {
if (imageView.checkMinScale()) { if (imageView.checkMinScale()) {
transformOutAnim(); ((GPreviewActivity) getActivity()).transformOutAnim();
((GPreviewActivity) getActivity()).transformOut(); ((GPreviewActivity) getActivity()).transformOut();
} }
} }
...@@ -493,13 +477,11 @@ public class BasePhotoFragment extends Fragment { ...@@ -493,13 +477,11 @@ public class BasePhotoFragment extends Fragment {
} }
} }
public void transformOutAnim() {
ObjectAnimator animator1 = ObjectAnimator.ofFloat(ivBack, "alpha", 1.0f, 0.0f);
animator1.setDuration(200);
animator1.start();
ObjectAnimator animator2 = ObjectAnimator.ofFloat(btnLL, "alpha", 1.0f, 0.0f); public interface OnDragListener {
animator2.setDuration(200); void drag();
animator2.start();
void actionCancel();
} }
} }
package com.yidianling.consultant.preview; package com.yidianling.consultant.preview;
import android.animation.ObjectAnimator;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.yidianling.consultant.R; import com.yidianling.consultant.R;
...@@ -33,6 +38,11 @@ public class GPreviewActivity extends AppCompatActivity { ...@@ -33,6 +38,11 @@ public class GPreviewActivity extends AppCompatActivity {
/*** 图片的展示的Fragment***/ /*** 图片的展示的Fragment***/
private List<BasePhotoFragment> fragments = new ArrayList<>(); private List<BasePhotoFragment> fragments = new ArrayList<>();
private View backIv;
private View btnLL;
private View titleBar;
private TextView selectPosition;
private TextView total;
@Override @Override
...@@ -49,6 +59,39 @@ public class GPreviewActivity extends AppCompatActivity { ...@@ -49,6 +59,39 @@ public class GPreviewActivity extends AppCompatActivity {
PhotoPagerAdapter adapter = new PhotoPagerAdapter(getSupportFragmentManager()); PhotoPagerAdapter adapter = new PhotoPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter); viewPager.setAdapter(adapter);
viewPager.setCurrentItem(currentIndex); viewPager.setCurrentItem(currentIndex);
backIv = findViewById(R.id.ivBack);
btnLL = findViewById(R.id.btnLL);
selectPosition = findViewById(R.id.select_position);
total = findViewById(R.id.total);
titleBar = findViewById(R.id.titleBar);
backIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
transformOutAnim();
transformOut();
}
});
selectPosition.setText((currentIndex + 1) + "");
total.setText(imgUrls == null ? "0" : imgUrls.size() + "");
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
selectPosition.setText((position + 1) + "");
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
// viewPager.setOffscreenPageLimit(3); // viewPager.setOffscreenPageLimit(3);
} }
...@@ -63,7 +106,6 @@ public class GPreviewActivity extends AppCompatActivity { ...@@ -63,7 +106,6 @@ public class GPreviewActivity extends AppCompatActivity {
SmoothImageView.setFullscreen(isFullscreen); SmoothImageView.setFullscreen(isFullscreen);
SmoothImageView.setIsScale(isScale); SmoothImageView.setIsScale(isScale);
if (isFullscreen) { if (isFullscreen) {
setTheme(android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); setTheme(android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
} }
...@@ -126,7 +168,7 @@ public class GPreviewActivity extends AppCompatActivity { ...@@ -126,7 +168,7 @@ public class GPreviewActivity extends AppCompatActivity {
isTransformOut = true; isTransformOut = true;
int currentItem = viewPager.getCurrentItem(); int currentItem = viewPager.getCurrentItem();
if (currentItem < imgUrls.size()) { if (currentItem < imgUrls.size()) {
if (TextUtils.isEmpty(imgUrls.get(currentItem).getVideoUrl())){ if (TextUtils.isEmpty(imgUrls.get(currentItem).getVideoUrl())) {
BasePhotoFragment fragment = fragments.get(currentItem); BasePhotoFragment fragment = fragments.get(currentItem);
fragment.changeBg(Color.TRANSPARENT); fragment.changeBg(Color.TRANSPARENT);
fragment.transformOut(new SmoothImageView.onTransformListener() { fragment.transformOut(new SmoothImageView.onTransformListener() {
...@@ -136,7 +178,7 @@ public class GPreviewActivity extends AppCompatActivity { ...@@ -136,7 +178,7 @@ public class GPreviewActivity extends AppCompatActivity {
exit(); exit();
} }
}); });
}else { } else {
exit(); exit();
} }
} else { } else {
...@@ -186,4 +228,25 @@ public class GPreviewActivity extends AppCompatActivity { ...@@ -186,4 +228,25 @@ public class GPreviewActivity extends AppCompatActivity {
} }
} }
public void hindView() {
titleBar.setVisibility(View.GONE);
btnLL.setVisibility(View.GONE);
}
public void showView() {
titleBar.setVisibility(View.VISIBLE);
btnLL.setVisibility(View.VISIBLE);
}
public void transformOutAnim() {
ObjectAnimator animator1 = ObjectAnimator.ofFloat(titleBar, "alpha", 1.0f, 0.0f);
animator1.setDuration(200);
animator1.start();
ObjectAnimator animator2 = ObjectAnimator.ofFloat(btnLL, "alpha", 1.0f, 0.0f);
animator2.setDuration(200);
animator2.start();
}
} }
...@@ -53,8 +53,7 @@ public class SmoothImageView extends PhotoView { ...@@ -53,8 +53,7 @@ public class SmoothImageView extends PhotoView {
ValueAnimator animator; ValueAnimator animator;
private float MAX_TRANS_SCALE = 0.2f; private float MAX_TRANS_SCALE = 0.2f;
private boolean isMaskPoint = false; private boolean isMaskPoint = false;
private View btnLL; private BasePhotoFragment.OnDragListener onDragListener;
private View backIv;
@Override @Override
protected void onDetachedFromWindow() { protected void onDetachedFromWindow() {
...@@ -62,8 +61,7 @@ public class SmoothImageView extends PhotoView { ...@@ -62,8 +61,7 @@ public class SmoothImageView extends PhotoView {
bitmapWidth = 0; bitmapWidth = 0;
bitmapHeight = 0; bitmapHeight = 0;
thumbRect = null; thumbRect = null;
btnLL = null; onDragListener = null;
backIv = null;
ISFUll = false; ISFUll = false;
if (animator != null) { if (animator != null) {
animator.cancel(); animator.cancel();
...@@ -189,12 +187,11 @@ public class SmoothImageView extends PhotoView { ...@@ -189,12 +187,11 @@ public class SmoothImageView extends PhotoView {
if (alpha < 0) { if (alpha < 0) {
alpha = 0; alpha = 0;
} }
if (btnLL != null && btnLL.getVisibility() == View.VISIBLE) {
btnLL.setVisibility(INVISIBLE); if (onDragListener != null) {
} onDragListener.drag();
if (backIv != null && backIv.getVisibility() == View.VISIBLE) {
backIv.setVisibility(INVISIBLE);
} }
if (alphaChangeListener != null) { if (alphaChangeListener != null) {
alphaChangeListener.onAlphaChange(alpha); alphaChangeListener.onAlphaChange(alpha);
} }
...@@ -209,13 +206,9 @@ public class SmoothImageView extends PhotoView { ...@@ -209,13 +206,9 @@ public class SmoothImageView extends PhotoView {
private boolean actionCancel() { private boolean actionCancel() {
if (moveScale() <= MAX_TRANS_SCALE) { if (moveScale() <= MAX_TRANS_SCALE) {
moveToOldPosition(); moveToOldPosition();
if (btnLL != null && btnLL.getVisibility() != View.VISIBLE) { if (onDragListener != null) {
btnLL.setVisibility(VISIBLE); onDragListener.actionCancel();
}
if (backIv != null && backIv.getVisibility() != View.VISIBLE) {
backIv.setVisibility(VISIBLE);
} }
} else { } else {
changeTransform(); changeTransform();
setTag(R.id.consultant_item_image_key, true); setTag(R.id.consultant_item_image_key, true);
...@@ -489,12 +482,8 @@ public class SmoothImageView extends PhotoView { ...@@ -489,12 +482,8 @@ public class SmoothImageView extends PhotoView {
this.thumbRect = thumbRect; this.thumbRect = thumbRect;
} }
public void setBtnLL(View view) { public void setOnDragListener(BasePhotoFragment.OnDragListener dragListener) {
this.btnLL = view; this.onDragListener = dragListener;
}
public void setBackIv(View view){
this.backIv = view;
} }
private void initTransform() { private void initTransform() {
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingDefaultResource">
<corners android:radius="@dimen/platform_dp_23" />
<gradient
android:endColor="#48CC95"
android:startColor="#61CEAC" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingDefaultResource">
<corners android:radius="@dimen/platform_dp_23" />
<gradient
android:endColor="#4BAFEC"
android:startColor="#65C4FF" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:shape="oval"
tools:ignore="MissingDefaultResource">
<solid android:color="#FF6565" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingDefaultResource">
<corners android:radius="@dimen/platform_dp_19" />
<solid android:color="#80000000"></solid>
<stroke
android:width="0.5px"
android:color="#40FFFFFF" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/transparent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="@android:color/transparent">
<com.yidianling.consultant.preview.PhotoViewPager <com.yidianling.consultant.preview.PhotoViewPager
android:background="@android:color/transparent"
android:id="@+id/viewPager" android:id="@+id/viewPager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
android:background="@android:color/transparent" />
<RelativeLayout
android:id="@+id/btnLL"
android:layout_width="match_parent"
android:layout_height="@dimen/platform_dp_60"
android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/platform_dp_40">
<Button
android:id="@+id/chatBtn"
android:layout_width="148dp"
android:layout_height="47dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/platform_dp_20"
android:background="@drawable/consultant_bg_btn_chat"
android:text="立即私聊"
android:textColor="@color/white"
android:textSize="17sp"
android:textStyle="bold" />
<Button
android:id="@+id/bookingBtn"
android:layout_width="148dp"
android:layout_height="47dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/platform_dp_20"
android:background="@drawable/consultant_bg_btn_book"
android:text="立即预约"
android:textColor="@color/white"
android:textSize="17sp"
android:textStyle="bold" />
<RelativeLayout
android:layout_width="@dimen/platform_dp_17"
android:layout_height="@dimen/platform_dp_17"
android:layout_alignTop="@+id/chatBtn"
android:layout_alignRight="@+id/chatBtn"
android:layout_marginTop="-10dp"
android:layout_marginRight="@dimen/platform_dp_10"
android:background="@drawable/consultant_bg_chat_unread_num">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="3"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/titleBar"
android:layout_width="match_parent"
android:layout_height="@dimen/platform_dp_32"
android:layout_marginTop="@dimen/platform_dp_32">
<ImageView
android:id="@+id/ivBack"
android:layout_width="@dimen/platform_dp_28"
android:layout_height="@dimen/platform_dp_28"
android:layout_centerVertical="true"
android:layout_marginLeft="12dp"
android:src="@drawable/consultant_back"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/platform_dp_24"
android:layout_centerInParent="true"
android:background="@drawable/consultant_bg_preview_photo_num"
android:gravity="center"
android:paddingLeft="@dimen/platform_dp_10"
android:paddingRight="@dimen/platform_dp_10">
<TextView
android:id="@+id/select_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/platform_sp_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_1"
android:text="/"
android:textColor="@color/white"
android:textSize="@dimen/platform_sp_14" />
<TextView
android:id="@+id/total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_1"
android:textColor="@color/white"
android:textSize="@dimen/platform_sp_14" />
</LinearLayout>
</RelativeLayout>
</FrameLayout> </RelativeLayout>
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
android:id="@+id/videoView" android:id="@+id/videoView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:focusableInTouchMode="true" android:layout_centerInParent="true"
android:layout_centerInParent="true" /> android:focusableInTouchMode="true" />
<ImageView <ImageView
...@@ -55,40 +55,15 @@ ...@@ -55,40 +55,15 @@
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingEnd="0dp" android:paddingEnd="0dp"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:visibility="gone"
android:progressDrawable="@drawable/consultant_seekbar_style" android:progressDrawable="@drawable/consultant_seekbar_style"
android:splitTrack="false" android:splitTrack="false"
android:thumb="@drawable/consultant_seekbar_thumb" android:thumb="@drawable/consultant_seekbar_thumb"
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" /> app:layout_constraintRight_toRightOf="parent" />
<LinearLayout <LinearLayout
android:id="@+id/btnLL"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/platform_dp_40">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/platform_dp_20"
android:layout_marginRight="@dimen/platform_dp_20"
android:layout_weight="1"
android:background="@drawable/bg_btn_dis" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/platform_dp_20"
android:layout_marginRight="@dimen/platform_dp_20"
android:layout_weight="1"
android:background="@color/green_btn" />
</LinearLayout>
<LinearLayout
android:id="@+id/loading" android:id="@+id/loading"
android:layout_width="103dp" android:layout_width="103dp"
android:layout_height="103dp" android:layout_height="103dp"
...@@ -123,17 +98,4 @@ ...@@ -123,17 +98,4 @@
android:alpha="0" android:alpha="0"
android:visibility="gone" /> android:visibility="gone" />
<ImageView
android:id="@+id/ivBack"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginLeft="12dp"
android:layout_marginTop="24dp"
android:padding="4dp"
android:scaleType="fitXY"
android:src="@drawable/consultant_back"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment