Skip to content

Commit b2023a2

Browse files
author
uis
committed
Merge remote-tracking branch 'remotes/origin/dev'
2 parents 5fc85fd + 5d58ad9 commit b2023a2

19 files changed

Lines changed: 177 additions & 41 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
**层叠随手势滑动,带轮播自定义ViewGroup**
55

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

1111
### Use
12-
implementation 'com.uis:stacklayout:0.1.1'
12+
implementation 'com.uis:stacklayout:0.1.2'
1313

1414
*Name*| *Descript*|*Value*
1515
-----|--------|---
@@ -91,6 +91,7 @@ stackEdgeModel|层叠位置|left/right
9191
0.0.2|滑动从顶层加入,整体下沉|fixed 内部view点击事件
9292
0.1.0|zoomX,zoomY呈等比数列|更改属性
9393
0.1.1|只有一条数据时|fixed
94+
0.1.2|增加动画、轮播时间设置,获取当前选中位置|新增方法
9495

9596
### Thanks
9697

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: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.uis.stackview.demo.activity;
22

33
import android.content.Intent;
4+
import android.graphics.Color;
45
import android.net.Uri;
6+
import android.os.Build;
57
import android.os.Bundle;
68
import android.util.Log;
79
import android.view.LayoutInflater;
810
import android.view.View;
911
import android.view.ViewGroup;
12+
import android.view.Window;
13+
import android.view.WindowManager;
1014
import android.widget.Toast;
1115

1216
import com.facebook.common.logging.FLog;
@@ -23,6 +27,8 @@
2327
import androidx.appcompat.app.AppCompatActivity;
2428
import androidx.recyclerview.widget.LinearLayoutManager;
2529
import androidx.recyclerview.widget.RecyclerView;
30+
import android.view.WindowManager;
31+
import androidx.viewpager.widget.ViewPager;
2632

2733
/**
2834
* Created by xmuSistone on 2017/5/12.
@@ -35,8 +41,25 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
3541

3642
@Override
3743
protected void onCreate(Bundle savedInstanceState) {
44+
if(Build.VERSION.SDK_INT >= 19){
45+
if(Build.VERSION.SDK_INT >= 23){
46+
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
47+
getWindow().setStatusBarColor(Color.TRANSPARENT);
48+
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
49+
//只有白色背景需加上此flag
50+
|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
51+
);
52+
}else {
53+
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
54+
}
55+
}
56+
3857
super.onCreate(savedInstanceState);
3958
setContentView(R.layout.activity_main);
59+
if(Build.VERSION.SDK_INT >= 19){
60+
ViewGroup.LayoutParams params = findViewById(R.id.view).getLayoutParams();
61+
params.height = getResources().getDimensionPixelSize(R.dimen.status_height);
62+
}
4063
FLog.setMinimumLoggingLevel(FLog.VERBOSE);
4164
if(!Fresco.hasBeenInitialized()) {
4265
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(getApplicationContext())
@@ -51,6 +74,10 @@ protected void onCreate(Bundle savedInstanceState) {
5174
findViewById(R.id.bt_app).setOnClickListener(this);
5275

5376
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());
5481

5582
recyclerView.setLayoutManager(new LinearLayoutManager(this));
5683
recyclerView.setAdapter(new StackAdapter());
@@ -78,7 +105,7 @@ public void onClick(View v) {
78105
}
79106
Log.e("xx","binderVH: " + position + ",data: " + new Gson().toJson(dataList.get(position)));
80107
DraweeController controller = Fresco.newDraweeControllerBuilder()
81-
.setUri(Uri.parse(dataList.get(position).getCoverImageUrl()))
108+
.setUri(Uri.parse(dataList.get(position).getMapImageUrl()))
82109
.setTapToRetryEnabled(true)
83110
.setOldController(viewHolder.dv.getController())
84111
.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: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,19 @@
55
android:layout_height="match_parent"
66
android:background="#fff"
77
android:orientation="vertical">
8+
<View android:id="@+id/view"
9+
android:layout_width="match_parent"
10+
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>
820
<include layout="@layout/stack_right"/>
9-
1021
<Button android:id="@+id/bt_web"
1122
android:layout_width="match_parent"
1223
android:layout_height="wrap_content"
@@ -19,7 +30,6 @@
1930
android:text="app"
2031
android:visibility="gone"
2132
/>
22-
2333
<androidx.recyclerview.widget.RecyclerView
2434
android:id="@+id/recyclerView"
2535
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)