Skip to content

Commit b28ed81

Browse files
committed
"Initial commit"
1 parent 66b2ded commit b28ed81

File tree

9 files changed

+309
-181
lines changed

9 files changed

+309
-181
lines changed

app/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ android {
2525
dependencies {
2626
implementation fileTree(dir: 'libs', include: ['*.jar'])
2727
implementation 'com.android.support:appcompat-v7:27.1.1'
28-
implementation 'com.android.support:design:27.1.1'
2928
implementation 'com.android.support:recyclerview-v7:27.1.1'
3029
implementation 'com.android.support:cardview-v7:27.1.1'
3130
implementation 'com.android.support.constraint:constraint-layout:1.1.2'

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
android:roundIcon="@mipmap/ic_launcher_round"
99
android:supportsRtl="true"
1010
android:theme="@style/AppTheme">
11-
<activity android:name=".MainActivity">
11+
<activity
12+
android:name=".MainActivity"
13+
android:launchMode="singleTop"
14+
android:screenOrientation="portrait"
15+
android:windowSoftInputMode="adjustPan">
1216
<intent-filter>
1317
<action android:name="android.intent.action.MAIN" />
1418
<category android:name="android.intent.category.LAUNCHER" />
1519
</intent-filter>
1620
</activity>
17-
<activity android:name=".FigureOutView" android:label="TestView">
18-
19-
</activity>
2021
</application>
2122
</manifest>
Lines changed: 146 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
package com.wuyr.pathlayoutmanagertest;
22

3+
import android.annotation.SuppressLint;
34
import android.graphics.Path;
45
import android.os.Bundle;
56
import android.support.annotation.Nullable;
6-
import android.support.design.widget.BottomSheetDialog;
7+
import android.support.v4.widget.DrawerLayout;
8+
import android.support.v7.app.ActionBarDrawerToggle;
79
import android.support.v7.app.AppCompatActivity;
810
import android.support.v7.widget.RecyclerView;
9-
import android.view.LayoutInflater;
11+
import android.text.TextUtils;
1012
import android.view.View;
1113
import android.widget.CompoundButton;
1214
import android.widget.SeekBar;
13-
import android.widget.Switch;
15+
import android.widget.TextView;
16+
import android.widget.Toast;
1417

1518
import java.util.ArrayList;
1619
import java.util.List;
1720

1821
/**
1922
* Created by wuyr on 18-5-21 下午11:25.
2023
*/
21-
public class MainActivity extends AppCompatActivity {
24+
public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener, SeekBar.OnSeekBarChangeListener {
2225

23-
private BottomSheetDialog mMenuDialog;
2426
private PathLayoutManager mPathLayoutManager;
25-
private CanvasView mView, mCanvasView;
26-
private MyAdapter mAdapter;
27+
private CanvasView mTrackView, mCanvasView;
28+
private PathAdapter mAdapter;
29+
private Toast mToast;
2730

31+
@SuppressLint("ShowToast")
2832
@Override
2933
protected void onCreate(@Nullable Bundle savedInstanceState) {
3034
super.onCreate(savedInstanceState);
@@ -33,124 +37,161 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3337
LogUtil.setIsShowClassName(false);
3438

3539
setContentView(R.layout.act_main_view);
36-
37-
initMenuDialog();
38-
// initView();
39-
}
40-
41-
private void initMenuDialog() {
42-
View menuView = LayoutInflater.from(this).inflate(R.layout.layout_menu, null, false);
43-
44-
45-
mMenuDialog = new BottomSheetDialog(this);
46-
mMenuDialog.setContentView(menuView);
40+
initView();
4741
}
4842

4943
private void initView() {
50-
mView = findViewById(R.id.track_panel);
44+
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
45+
this, findViewById(R.id.drawer), findViewById(R.id.toolbar),
46+
R.string.app_name, R.string.app_name);
47+
((DrawerLayout) findViewById(R.id.drawer)).addDrawerListener(toggle);
48+
toggle.syncState();
49+
50+
mTrackView = findViewById(R.id.track_panel);
5151
mCanvasView = findViewById(R.id.canvas_view);
5252
RecyclerView recyclerView = findViewById(R.id.recycler_view);
5353
recyclerView.setLayoutManager(mPathLayoutManager = new PathLayoutManager(null, 50));
54-
recyclerView.setAdapter(mAdapter = new MyAdapter(this, null));
55-
56-
SeekBar seekBar = findViewById(R.id.item_offset);
57-
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
58-
@Override
59-
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
60-
mPathLayoutManager.setItemOffset(progress);
61-
}
62-
63-
@Override
64-
public void onStartTrackingTouch(SeekBar seekBar) {
54+
recyclerView.setAdapter(mAdapter = new PathAdapter(this, null));
6555

66-
}
67-
68-
@Override
69-
public void onStopTrackingTouch(SeekBar seekBar) {
70-
71-
72-
}
73-
});
74-
75-
Switch itemDirectionFixed = findViewById(R.id.direction_fixed);
76-
Switch allowOverflow = findViewById(R.id.allow_overflow);
77-
Switch unlimitedScroll = findViewById(R.id.unlimited_scroll);
78-
79-
CompoundButton.OnCheckedChangeListener listener = (buttonView, isChecked) -> {
80-
switch (buttonView.getId()) {
81-
case R.id.direction_fixed:
82-
mPathLayoutManager.setItemDirectionFixed(isChecked);
83-
break;
84-
case R.id.unlimited_scroll:
85-
mPathLayoutManager.setUnlimitedScroll(isChecked);
86-
if (isChecked) {
87-
allowOverflow.setChecked(false);
88-
}
89-
break;
90-
case R.id.allow_overflow:
91-
mPathLayoutManager.setAllowOverflow(isChecked);
92-
if (isChecked) {
93-
unlimitedScroll.setChecked(false);
94-
}
95-
break;
96-
default:
97-
break;
98-
}
99-
};
100-
101-
itemDirectionFixed.setOnCheckedChangeListener(listener);
102-
unlimitedScroll.setOnCheckedChangeListener(listener);
103-
allowOverflow.setOnCheckedChangeListener(listener);
56+
mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
10457

58+
findViewById(R.id.card).setEnabled(false);
59+
findViewById(R.id.normal).setEnabled(false);
60+
((SeekBar) findViewById(R.id.item_offset)).setOnSeekBarChangeListener(this);
61+
((SeekBar) findViewById(R.id.auto_select_fraction)).setOnSeekBarChangeListener(this);
10562
}
10663

10764
public void handleOnClick(View view) {
108-
109-
}
110-
111-
public void horizontalScroll(View view) {
112-
mPathLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
113-
mPathLayoutManager.smoothScrollToPosition(2);
114-
}
115-
116-
public void verticalScroll(View view) {
117-
mPathLayoutManager.setOrientation(RecyclerView.VERTICAL);
118-
}
119-
120-
public void startDraw(View view) {
121-
mCanvasView.setVisibility(View.VISIBLE);
122-
mCanvasView.clear();
123-
mView.setVisibility(View.INVISIBLE);
65+
switch (view.getId()) {
66+
case R.id.start_draw:
67+
mAdapter.clearData();
68+
mCanvasView.setVisibility(View.VISIBLE);
69+
mCanvasView.clear();
70+
mTrackView.setVisibility(View.INVISIBLE);
71+
break;
72+
case R.id.end_draw:
73+
Path path = mCanvasView.getPath();
74+
if (path != null && !path.isEmpty()) {
75+
mCanvasView.setVisibility(View.INVISIBLE);
76+
mTrackView.setPath(mCanvasView.getPath());
77+
mTrackView.setVisibility(View.VISIBLE);
78+
mPathLayoutManager.updatePath(mCanvasView.getPath());
79+
}
80+
break;
81+
case R.id.add:
82+
List<String> data = new ArrayList<>();
83+
for (int i = mAdapter.getItemCount(); i < mAdapter.getItemCount() + 10; i++) {
84+
data.add("" + i);
85+
}
86+
mAdapter.addData(data);
87+
break;
88+
case R.id.remove:
89+
for (int i = 0; i < 10; i++) {
90+
mAdapter.removeData(mAdapter.getItemCount() - 1);
91+
}
92+
break;
93+
94+
case R.id.card:
95+
view.setEnabled(false);
96+
findViewById(R.id.j20).setEnabled(true);
97+
findViewById(R.id.dragon).setEnabled(true);
98+
99+
break;
100+
case R.id.j20:
101+
view.setEnabled(false);
102+
findViewById(R.id.card).setEnabled(true);
103+
findViewById(R.id.dragon).setEnabled(true);
104+
break;
105+
case R.id.dragon:
106+
view.setEnabled(false);
107+
findViewById(R.id.card).setEnabled(true);
108+
findViewById(R.id.j20).setEnabled(true);
109+
break;
110+
111+
case R.id.normal:
112+
view.setEnabled(false);
113+
findViewById(R.id.overflow).setEnabled(true);
114+
findViewById(R.id.loop).setEnabled(true);
115+
mPathLayoutManager.setScrollMode(PathLayoutManager.SCROLL_MODE_NORMAL);
116+
break;
117+
case R.id.overflow:
118+
view.setEnabled(false);
119+
findViewById(R.id.normal).setEnabled(true);
120+
findViewById(R.id.loop).setEnabled(true);
121+
mPathLayoutManager.setScrollMode(PathLayoutManager.SCROLL_MODE_OVERFLOW);
122+
break;
123+
case R.id.loop:
124+
view.setEnabled(false);
125+
findViewById(R.id.overflow).setEnabled(true);
126+
findViewById(R.id.normal).setEnabled(true);
127+
mPathLayoutManager.setScrollMode(PathLayoutManager.SCROLL_MODE_LOOP);
128+
break;
129+
130+
case R.id.apply_scale_ratio:
131+
String content = ((TextView) findViewById(R.id.scale_ratio_text)).getText().toString();
132+
if (TextUtils.isEmpty(content)) {
133+
mPathLayoutManager.setItemScaleRatio();
134+
} else {
135+
String[] ratiosString = content.split(",");
136+
float[] ratios = new float[ratiosString.length];
137+
try {
138+
for (int i = 0; i < ratiosString.length; i++) {
139+
ratios[i] = Float.parseFloat(ratiosString[i]);
140+
}
141+
mPathLayoutManager.setItemScaleRatio(ratios);
142+
} catch (Exception e) {
143+
mToast.setText(e.toString());
144+
mToast.show();
145+
}
146+
}
147+
break;
148+
default:
149+
break;
150+
}
124151
}
125152

126-
public void stopDraw(View view) {
127-
Path path = mCanvasView.getPath();
128-
if (path != null && !path.isEmpty()) {
129-
mCanvasView.setVisibility(View.INVISIBLE);
130-
mView.setPath(mCanvasView.getPath());
131-
mView.setVisibility(View.VISIBLE);
132-
mPathLayoutManager.updatePath(mCanvasView.getPath());
153+
@Override
154+
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
155+
switch (buttonView.getId()) {
156+
case R.id.orientation:
157+
mPathLayoutManager.setOrientation(isChecked ? RecyclerView.VERTICAL : RecyclerView.HORIZONTAL);
158+
break;
159+
case R.id.direction_fixed:
160+
mPathLayoutManager.setItemDirectionFixed(isChecked);
161+
break;
162+
case R.id.auto_select:
163+
mPathLayoutManager.setAutoSelect(isChecked);
164+
break;
165+
default:
166+
break;
133167
}
134168
}
135169

136-
public void addItem(View view) {
137-
List<String> data = new ArrayList<>();
138-
for (int i = mAdapter.getItemCount(); i < mAdapter.getItemCount() + 10; i++) {
139-
data.add("" + i);
170+
@Override
171+
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
172+
switch (seekBar.getId()) {
173+
case R.id.item_offset:
174+
mPathLayoutManager.setItemOffset(progress);
175+
mToast.setText(String.valueOf(progress));
176+
break;
177+
case R.id.auto_select_fraction:
178+
float fraction = progress / 100F;
179+
mPathLayoutManager.setAutoSelectFraction(fraction);
180+
mToast.setText(String.valueOf(fraction));
181+
break;
182+
default:
183+
break;
140184
}
141-
mAdapter.addData(data);
142-
// mAdapter.notifyDataSetChanged();
185+
mToast.show();
143186
}
144187

145-
public void removeItem(View view) {
146-
for (int i = 0; i < 10; i++) {
147-
mAdapter.removeData(mAdapter.getItemCount() - 1);
148-
}
188+
@Override
189+
public void onStartTrackingTouch(SeekBar seekBar) {
190+
149191
}
150192

151-
public void showMenu(View view) {
152-
if (!mMenuDialog.isShowing()) {
153-
mMenuDialog.show();
154-
}
193+
@Override
194+
public void onStopTrackingTouch(SeekBar seekBar) {
195+
155196
}
156197
}

app/src/main/java/com/wuyr/pathlayoutmanagertest/MyAdapter.java renamed to app/src/main/java/com/wuyr/pathlayoutmanagertest/PathAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
/**
1313
* Created by wuyr on 18-5-20 上午4:09.
1414
*/
15-
public class MyAdapter extends BaseAdapter<String, MyAdapter.ViewHolder> {
15+
public class PathAdapter extends BaseAdapter<String, PathAdapter.ViewHolder> {
1616

1717
private Toast toast;
1818

19-
public MyAdapter(Context context, List<String> data) {
19+
public PathAdapter(Context context, List<String> data) {
2020
super(context, data, R.layout.adapter_item_view, ViewHolder.class);
2121
toast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
2222
}

0 commit comments

Comments
 (0)