Commit 21d72c4f by 段启岩

图片浏览器基本功能完成

parent 21821cc0
...@@ -8,8 +8,8 @@ android { ...@@ -8,8 +8,8 @@ android {
applicationId "cn.yunliyunwai.beyondclouds" applicationId "cn.yunliyunwai.beyondclouds"
minSdkVersion 19 minSdkVersion 19
targetSdkVersion 29 targetSdkVersion 29
versionCode 1 versionCode 2
versionName "1.0" versionName "2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
<activity android:name=".ui.question.QuestionDetailActivity" /> <activity android:name=".ui.question.QuestionDetailActivity" />
<activity android:name=".ui.settings.SettingsActivity" /> <activity android:name=".ui.settings.SettingsActivity" />
<activity android:name=".ui.user.UserHomeActivity" /> <activity android:name=".ui.user.UserHomeActivity" />
<activity android:name=".ui.common.PhotoViewerActivity" android:theme="@style/AppTheme.FullScreen" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
package cn.yunliyunwai.beyondclouds.ui.common;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.bumptech.glide.Glide;
import cn.yunliyunwai.beyondclouds.databinding.ActivityPhotoviewerBinding;
import cn.yunliyunwai.beyondclouds.databinding.FragmentPhotoBinding;
public class PhotoViewerActivity extends AppCompatActivity {
public static final String ARGS_PHOTO_LINKS = "PHOTO_LINKS";
ActivityPhotoviewerBinding binding;
private String[] mPhotos;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityPhotoviewerBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Intent intent = getIntent();
mPhotos = intent.getStringArrayExtra(ARGS_PHOTO_LINKS);
PhotosPagerAdapter adapter = new PhotosPagerAdapter(getSupportFragmentManager(), mPhotos);
binding.viewPager.setAdapter(adapter);
}
public static class PhotosPagerAdapter extends FragmentPagerAdapter {
private String[] mPhotos;
public PhotosPagerAdapter(FragmentManager fm, String[] mPhotos) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
this.mPhotos = mPhotos;
}
@NonNull
@Override
public Fragment getItem(int position) {
return new PhotoFragment(mPhotos[position]);
}
@Override
public int getCount() {
return mPhotos.length;
}
}
public static class PhotoFragment extends Fragment {
FragmentPhotoBinding binding;
private String mPhoto;
public PhotoFragment(String photo) {
this.mPhoto = photo;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = FragmentPhotoBinding.inflate(inflater, container, false);
return binding.getRoot();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Glide.with(view).load(mPhoto).centerInside().into(binding.imgView);
}
}
}
...@@ -6,6 +6,7 @@ import android.view.View; ...@@ -6,6 +6,7 @@ import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import cn.yunliyunwai.beyondclouds.ui.ToastUtils; import cn.yunliyunwai.beyondclouds.ui.ToastUtils;
import cn.yunliyunwai.beyondclouds.ui.common.PhotoViewerActivity;
import cn.yunliyunwai.beyondclouds.ui.login.LoginActivity; import cn.yunliyunwai.beyondclouds.ui.login.LoginActivity;
import cn.yunliyunwai.beyondclouds.ui.settings.SettingsActivity; import cn.yunliyunwai.beyondclouds.ui.settings.SettingsActivity;
import cn.yunliyunwai.beyondclouds.ui.user.UserHomeActivity; import cn.yunliyunwai.beyondclouds.ui.user.UserHomeActivity;
...@@ -205,4 +206,10 @@ public class NavHandlers { ...@@ -205,4 +206,10 @@ public class NavHandlers {
intent.putExtra(UserHomeActivity.ARG_USER_ID, userId); intent.putExtra(UserHomeActivity.ARG_USER_ID, userId);
view.getContext().startActivity(intent); view.getContext().startActivity(intent);
} }
public static void toPhotoViewer(View view, String[] photoLinks) {
Intent intent = new Intent(view.getContext(), PhotoViewerActivity.class);
intent.putExtra(PhotoViewerActivity.ARGS_PHOTO_LINKS, photoLinks);
view.getContext().startActivity(intent);
}
} }
...@@ -4,6 +4,7 @@ import android.content.Context; ...@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.os.Build; import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
...@@ -24,6 +25,7 @@ import com.bumptech.glide.request.target.Target; ...@@ -24,6 +25,7 @@ import com.bumptech.glide.request.target.Target;
import java.util.List; import java.util.List;
import cn.yunliyunwai.beyondclouds.R; import cn.yunliyunwai.beyondclouds.R;
import cn.yunliyunwai.beyondclouds.ui.handler.NavHandlers;
/** /**
* 动态九宫格布局 * 动态九宫格布局
...@@ -126,6 +128,12 @@ public class DynamicGridLayout extends ViewGroup { ...@@ -126,6 +128,12 @@ public class DynamicGridLayout extends ViewGroup {
int left = computePosition(currentCol, imageSize) + getPaddingLeft(); int left = computePosition(currentCol, imageSize) + getPaddingLeft();
int top = computePosition(currentRow, imageSize) + getPaddingTop(); int top = computePosition(currentRow, imageSize) + getPaddingTop();
imageView.layout(left, top, left + imageSize, top + imageSize); imageView.layout(left, top, left + imageSize, top + imageSize);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
NavHandlers.toPhotoViewer(v, mImgUrls.toArray(new String[0]));
}
});
} }
isImageInit = true; isImageInit = true;
} }
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
android:background="#000000"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ 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