Skip to content

Commit d74f79b

Browse files
committed
Merge branch 'dev' of https://github.com/luiing/StackViewLayout into dev
2 parents d8ee9a8 + 5d58ad9 commit d74f79b

15 files changed

Lines changed: 95 additions & 13 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
**层叠随手势滑动,带轮播自定义ViewGroup**
55

66
### Captures
7-
7+
![效果图](/pic/002.png)
88
![效果图](/pic/pic001.jpeg)
99
![效果图](/pic/demo20.gif)
1010

build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ buildscript {
1010
classpath 'com.android.tools.build:gradle:3.2.1'
1111
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
1212
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
13-
// NOTE: Do not place your application dependencies here; they belong
14-
// in the individual module build.gradle files
1513
}
1614
}
1715

demo/src/main/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
<application
1313
android:allowBackup="true"
1414
android:hardwareAccelerated="true"
15-
android:icon="@mipmap/ic_launcher"
1615
android:label="@string/app_name"
1716
android:supportsRtl="true"
1817
android:theme="@style/AppTheme"

demo/src/main/java/com/uis/stackview/demo/activity/MainActivity.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import androidx.recyclerview.widget.LinearLayoutManager;
2929
import androidx.recyclerview.widget.RecyclerView;
3030
import android.view.WindowManager;
31+
import androidx.viewpager.widget.ViewPager;
32+
3133
/**
3234
* Created by xmuSistone on 2017/5/12.
3335
*/
@@ -72,6 +74,10 @@ protected void onCreate(Bundle savedInstanceState) {
7274
findViewById(R.id.bt_app).setOnClickListener(this);
7375

7476
dataList = StackAdapter.initDataList(this);
77+
ViewPager viewPager = findViewById(R.id.viewPager);
78+
ViewPagerAdapter adapter = new ViewPagerAdapter(dataList);
79+
viewPager.setAdapter(adapter);
80+
viewPager.setCurrentItem(adapter.getRealSize());
7581

7682
recyclerView.setLayoutManager(new LinearLayoutManager(this));
7783
recyclerView.setAdapter(new StackAdapter());
@@ -99,7 +105,7 @@ public void onClick(View v) {
99105
}
100106
Log.e("xx","binderVH: " + position + ",data: " + new Gson().toJson(dataList.get(position)));
101107
DraweeController controller = Fresco.newDraweeControllerBuilder()
102-
.setUri(Uri.parse(dataList.get(position).getCoverImageUrl()))
108+
.setUri(Uri.parse(dataList.get(position).getMapImageUrl()))
103109
.setTapToRetryEnabled(true)
104110
.setOldController(viewHolder.dv.getController())
105111
.build();

demo/src/main/java/com/uis/stackview/demo/activity/StackAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public void onBindView(View view, int position) {
107107
}
108108
//Log.e("xx","binderVH: " + position + ",data: " + new Gson().toJson(dataList.get(position)));
109109
try{
110-
Glide.with(view.getContext()).load(dataList.get(position).getCoverImageUrl()).into(viewHolder.imageView);
110+
Glide.with(view.getContext()).load(dataList.get(position).getMapImageUrl()).into(viewHolder.imageView);
111111
}catch (Exception ex){
112112
ex.printStackTrace();
113113
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.uis.stackview.demo.activity;
2+
3+
import android.view.LayoutInflater;
4+
import android.view.View;
5+
import android.view.ViewGroup;
6+
7+
import com.facebook.drawee.view.SimpleDraweeView;
8+
import com.uis.stackview.demo.R;
9+
import com.uis.stackview.demo.entity.ItemEntity;
10+
11+
import java.util.LinkedList;
12+
import java.util.List;
13+
14+
import androidx.annotation.NonNull;
15+
import androidx.viewpager.widget.PagerAdapter;
16+
17+
public class ViewPagerAdapter extends PagerAdapter {
18+
List<ItemEntity> dataList;
19+
LinkedList<View> views = new LinkedList<View>();
20+
int MAX = 1000;
21+
int real = 0;
22+
23+
public ViewPagerAdapter(List<ItemEntity> dataList) {
24+
this.dataList = dataList;
25+
real = dataList.size();
26+
}
27+
28+
public int getRealSize(){
29+
return MAX/2 - MAX/2%real;
30+
}
31+
32+
@NonNull
33+
@Override
34+
public Object instantiateItem(@NonNull ViewGroup container, int position) {
35+
position %= real;
36+
View v;
37+
if(views.size() > 0){
38+
v = views.removeLast();
39+
}else {
40+
v = LayoutInflater.from(container.getContext()).
41+
inflate(R.layout.item_fresco_pager, container, false);
42+
}
43+
SimpleDraweeView dv = (SimpleDraweeView)v;
44+
dv.setImageURI(dataList.get(position).getMapImageUrl());
45+
container.addView(v);
46+
return v;
47+
}
48+
49+
@Override
50+
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
51+
View v = (View)object;
52+
container.removeView(v);
53+
views.add(v);
54+
}
55+
56+
@Override
57+
public int getCount() {
58+
return MAX;
59+
}
60+
61+
@Override
62+
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
63+
return view == object;
64+
}
65+
}

demo/src/main/res/layout/activity_main.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
<View android:id="@+id/view"
99
android:layout_width="match_parent"
1010
android:layout_height="0dp"/>
11+
<androidx.viewpager.widget.ViewPager
12+
android:id="@+id/viewPager"
13+
android:layout_width="match_parent"
14+
android:layout_height="150dp"
15+
android:clipChildren="true"
16+
android:clipToPadding="false"
17+
android:paddingRight="80dp"
18+
>
19+
</androidx.viewpager.widget.ViewPager>
1120
<include layout="@layout/stack_right"/>
1221
<Button android:id="@+id/bt_web"
1322
android:layout_width="match_parent"
@@ -21,7 +30,6 @@
2130
android:text="app"
2231
android:visibility="gone"
2332
/>
24-
2533
<androidx.recyclerview.widget.RecyclerView
2634
android:id="@+id/recyclerView"
2735
android:layout_width="match_parent"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<com.facebook.drawee.view.SimpleDraweeView
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:app="http://schemas.android.com/apk/res-auto"
5+
android:id="@+id/imageView"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent"
8+
app:actualImageScaleType="focusCrop"
9+
app:roundedCornerRadius="5dp"
10+
android:paddingLeft="15dp"
11+
/>
12+
-3.34 KB
Binary file not shown.
-2.15 KB
Binary file not shown.

0 commit comments

Comments
 (0)