去掉向上滑动解锁功能,添加向右滑动解锁条,向右滑动解锁条解锁;实现简单功能,特效的话需要再优化;如图
滑动解锁条SlideUnlockView
vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/keyguard_bottom_area.xml
+ <com.android.systemui.statusbar.SlideUnlockView
+ android:id="@+id/slideUnlockView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:layout_gravity="bottom|center_horizontal"
+ slideUnlockBackgroundResource="@drawable/jiesuo_bg"
+ android:layout_marginBottom="30dp"
+ slideUnlockBlockResource="@drawable/jiesuo_button" />
需要自定义滑动解锁条样式
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/SlideUnlockView.java
不详细介绍,有相关patch下载
初始化slide
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
mSlideUnlockView 滑动事件
mSlideUnlockView = (SlideUnlockView)findViewById(R.id.slideUnlockView);
+ mSlideUnlockView.setOnUnLockListener(new OnUnLockListener() {
+ @Override
+ public void setUnLocked(boolean unLock) {
+ // 濡傛灉鏄痶rue锛岃瘉鏄庤В閿?+ if (unLock) {
+ mStatusBar.makeExpandedInvisible();//makeExpandedInvisible是解锁的主要方法
+ }
+ mSlideUnlockView.reset();
+ }
+ });
+ }
+
+
屏蔽上滑解锁
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
public boolean onTouchEvent(MotionEvent event) {
+
+ KeyguardManager mKeyguardManager = (KeyguardManager) mContext.getSystemService (Context.KEYGUARD_SERVICE);
+ boolean flag = mKeyguardManager.inKeyguardRestrictedInputMode();
+ if(flag){
+ return false;
+ }
只屏蔽这里的话后期测试发现一个问题,滑动解锁条时向上滑动,旋转屏幕时,notification会显示不全或者会遮挡住时间的显示,应该是虽然屏蔽掉上滑解锁,但是其它地方还是会有调用上滑屏幕动画的地方,并且没有释放。
还需要屏蔽下面
case MotionEvent.ACTION_MOVE:
/*final float h = y - mInitialTouchY;
trackMovement(event);
if (scrolledToBottom || mTouchStartedInEmptyArea || mAnimatingOnDown) {
float hAbs = Math.abs(h);
if ((h < -mTouchSlop || (mAnimatingOnDown && hAbs > mTouchSlop))
&& hAbs > Math.abs(x - mInitialTouchX)) {
cancelHeightAnimator();
startExpandMotion(x, y, true /* startTracking */, mExpandedHeight);*/
return true;
}
.makeExpandedInvisible()解锁的方法也需要做简单处理
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
- if (!mExpandedVisible || mStatusBarWindow == null) {
+ /*if (!mExpandedVisible || mStatusBarWindow == null) {
return;
- }
+ }*/
// Ensure the panel is fully collapsed (just in case; bug 6765842, 7260868)
mStatusBarView.collapsePanel(/*animate=*/ false, false /* delayed*/,
@@ -3240,13 +3240,13 @@ public class StatusBar extends SystemUI implements DemoMode,
runPostCollapseRunnables();
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, false);
showBouncerIfKeyguard();
- recomputeDisableFlags(mNotificationPanel.hideStatusBarIconsWhenExpanded() /* animate */);
+ recomputeDisableFlags(true /* animate */);
// Trimming will happen later if Keyguard is showing - doing it here might cause a jank in
// the bouncer appear animation.
- if (!mStatusBarKeyguardViewManager.isShowing()) {
+ //if (!mStatusBarKeyguardViewManager.isShowing()) {
WindowManagerGlobal.getInstance().trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN);
- }
+ //}
下载链接patch
https://download.csdn.net/my