Skip to content

Commit fde9f66

Browse files
author
liuxiaoyang
committed
modify onMeasure()
1 parent f4a7ee6 commit fde9f66

4 files changed

Lines changed: 79 additions & 20 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
android:allowBackup="true"
99
android:icon="@mipmap/ic_launcher"
1010
android:label="@string/app_name">
11-
<activity android:name="com.reginald.patternlockview.DemoActivity">
11+
<activity android:name="com.reginald.patternlockview.DemoActivity"
12+
android:screenOrientation="portrait">
1213
<intent-filter>
1314
<action android:name="android.intent.action.MAIN" />
1415

app/src/main/java/com/reginald/patternlockview/DemoActivity.java

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import android.app.Activity;
44
import android.os.Bundle;
55
import android.util.Log;
6+
import android.view.View;
7+
import android.widget.Button;
68
import android.widget.TextView;
79

810
import com.reginald.patternlockview.demo.R;
@@ -11,20 +13,54 @@ public class DemoActivity extends Activity {
1113

1214
private static final String TAG = "DemoActivity";
1315

14-
PatternLockView mLockView;
16+
PatternLockView mCurLockView;
17+
18+
PatternLockView mCircleLockView;
19+
20+
PatternLockView mDotLockView;
1521

1622
TextView mPasswordTextView;
1723

24+
Button mSwitchButton;
25+
1826
String mPassword = "";
1927

2028
@Override
2129
protected void onCreate(Bundle savedInstanceState) {
2230
super.onCreate(savedInstanceState);
2331
setContentView(R.layout.activity_demo_layout);
24-
mLockView = (PatternLockView) findViewById(R.id.lock_view);
32+
mCircleLockView = (PatternLockView) findViewById(R.id.lock_view_circle);
33+
mDotLockView = (PatternLockView) findViewById(R.id.lock_view_dot);
34+
mCurLockView = mDotLockView;
2535
mPasswordTextView = (TextView) findViewById(R.id.password_text);
36+
mSwitchButton = (Button) findViewById(R.id.switch_but);
37+
mSwitchButton.setOnClickListener(new View.OnClickListener() {
38+
@Override
39+
public void onClick(View v) {
40+
switchLockViews();
41+
}
42+
});
2643
mPasswordTextView.setText("please enter your password!");
27-
mLockView.setCallBack(new PatternLockView.CallBack() {
44+
switchLockViews();
45+
}
46+
47+
private void switchLockViews() {
48+
mCurLockView = mCurLockView == mCircleLockView ? mDotLockView : mCircleLockView;
49+
mCurLockView.setVisibility(View.VISIBLE);
50+
mCurLockView.reset();
51+
if (mCurLockView != mCircleLockView) {
52+
mCircleLockView.setVisibility(View.GONE);
53+
mCircleLockView.setCallBack(null);
54+
mCircleLockView.setOnNodeTouchListener(null);
55+
mSwitchButton.setText("switch to circle lock view");
56+
} else {
57+
mDotLockView.setVisibility(View.GONE);
58+
mDotLockView.setCallBack(null);
59+
mDotLockView.setOnNodeTouchListener(null);
60+
mSwitchButton.setText("switch to dot lock view");
61+
}
62+
63+
mCurLockView.setCallBack(new PatternLockView.CallBack() {
2864
@Override
2965
public int onFinish(PatternLockView.Password password) {
3066
if (password.string.length() != 0) {
@@ -42,11 +78,12 @@ public int onFinish(PatternLockView.Password password) {
4278
}
4379
});
4480

45-
mLockView.setOnNodeTouchListener(new PatternLockView.OnNodeTouchListener() {
81+
mCurLockView.setOnNodeTouchListener(new PatternLockView.OnNodeTouchListener() {
4682
@Override
4783
public void onNodeTouched(int NodeId) {
4884
Log.d(TAG, "node " + NodeId + " has touched!");
4985
}
5086
});
87+
5188
}
5289
}

app/src/main/res/layout/activity_demo_layout.xml

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,18 @@
99
android:layout_height="match_parent"
1010
tools:context="com.reginald.patternlockview.DemoActivity">
1111

12-
<TextView
13-
android:layout_width="wrap_content"
14-
android:layout_height="wrap_content"
15-
android:textSize="30dp"
16-
android:text="PatternLockView"
17-
android:layout_gravity="center_horizontal"
18-
android:gravity="center"
19-
android:layout_marginTop="20dp"
20-
/>
21-
2212
<TextView
2313
android:id="@+id/password_text"
2414
android:layout_width="wrap_content"
25-
android:layout_height="wrap_content"
15+
android:layout_height="80dp"
2616
android:textSize="20dp"
2717
android:layout_gravity="center_horizontal"
2818
android:gravity="center"
29-
android:layout_marginTop="20dp"
19+
android:layout_marginTop="10dp"
3020
/>
3121

3222
<com.reginald.patternlockview.PatternLockView
33-
android:id="@+id/lock_view"
23+
android:id="@+id/lock_view_circle"
3424
android:layout_width="match_parent"
3525
android:layout_height="wrap_content"
3626
android:layout_gravity="center"
@@ -40,14 +30,44 @@
4030
app:lock_vibrateTime="100"
4131
app:lock_lineColor="#b2ffffff"
4232
app:lock_lineWidth="8dp"
33+
app:lock_nodeSize="40dp"
34+
app:lock_padding="20dp"
35+
app:lock_nodeTouchExpand="15dp"
36+
app:lock_nodeSrc="@drawable/pattern_lock_circle_node_normal"
37+
app:lock_nodeHighlightSrc="@drawable/pattern_lock_circle_node_highlighted"
38+
app:lock_nodeOnAnim="@anim/pattern_lock_node_anim_larger"
39+
app:lock_autoLink="true"
40+
/>
41+
42+
<com.reginald.patternlockview.PatternLockView
43+
android:id="@+id/lock_view_dot"
44+
android:layout_width="match_parent"
45+
android:layout_height="wrap_content"
46+
android:layout_gravity="center"
47+
android:layout_marginTop="30dp"
48+
app:lock_size="4"
49+
app:lock_enableVibrate="true"
50+
app:lock_vibrateTime="100"
51+
app:lock_lineColor="#b2ffffff"
52+
app:lock_lineWidth="8dp"
4353
app:lock_nodeSize="10dp"
4454
app:lock_spacing="90dp"
4555
app:lock_padding="20dp"
4656
app:lock_nodeTouchExpand="15dp"
4757
app:lock_nodeSrc="@drawable/pattern_lock_dot_node_normal"
4858
app:lock_nodeHighlightSrc="@drawable/pattern_lock_dot_node_highlighted"
4959
app:lock_nodeOnAnim="@anim/pattern_lock_node_anim_larger"
50-
app:lock_autoLink="false"
60+
app:lock_autoLink="true"
61+
/>
62+
63+
<Button
64+
android:id="@+id/switch_but"
65+
android:layout_width="match_parent"
66+
android:layout_height="wrap_content"
67+
android:textSize="20dp"
68+
android:layout_gravity="center_horizontal"
69+
android:gravity="center"
70+
android:layout_marginBottom="20dp"
5171
/>
5272

5373
</LinearLayout>

library/src/main/java/com/reginald/patternlockview/PatternLockView.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,8 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
277277
Log.v(TAG, String.format("measured nodeSize = %f)", nodesize));
278278
}
279279

280-
setMeasuredDimension(width, height);
280+
int minViewSize = width < height ? width : height;
281+
setMeasuredDimension(minViewSize, minViewSize);
281282

282283
for (int i = 0; i < getChildCount(); i++) {
283284
View v = getChildAt(i);

0 commit comments

Comments
 (0)