一:相机中的右边的预览窗口查看图片后选择删除,屏幕界面下方会有一条横线(去除横线的办法)
(packages/apps/Gallery2/src/com/android/gallery3d/data/FilterEmptyPromptSet.java)
diff --git a/src/com/android/gallery3d/data/FilterEmptyPromptSet.java b/src/com/android/gallery3d/data/FilterEmptyPromptSet.java
index ae053df..955a749 100644
--- a/src/com/android/gallery3d/data/FilterEmptyPromptSet.java
+++ b/src/com/android/gallery3d/data/FilterEmptyPromptSet.java
@@ -44,7 +44,7 @@ public class FilterEmptyPromptSet extends MediaSet implements ContentListener {if (itemCount > 0) {return itemCount;} else {
- return 1;
+ return 0;}}
二:计算器先按 "-"后在按其他计算符号都可以输入,正常第一个运算符只能输入"-"
(packages/apps/Calculator/src/com/android/calculator2/CalculatorExpressionBuilder.java)
diff --git a/src/com/android/calculator2/CalculatorExpressionBuilder.java b/src/com/android/calculator2/CalculatorExpressionBuilder.java
index fc229f0..df85076 100755
--- a/src/com/android/calculator2/CalculatorExpressionBuilder.java
+++ b/src/com/android/calculator2/CalculatorExpressionBuilder.java
@@ -19,6 +19,7 @@ package com.android.calculator2;t.Context;SpannableStringBuilder;TextUtils;
+import android.util.Log;public class CalculatorExpressionBuilder extends SpannableStringBuilder {@@ -65,6 +66,16 @@ public class CalculatorExpressionBuilder extends SpannableStringBuilder {break;}
+ if (start > 0 && "-".indexOf(expr.charAt(start - 1)) != -1) {
+ appendExpr = "";
+ break;
+ }// don't allow multiple successive operatorswhile (start > 0 && "+-*/".indexOf(expr.charAt(start - 1)) != -1) {--start;
三:虚拟按键请做成可以隐藏的功能
(frameworks/)
diff --git a/base/core/java/android/app/Activity.java b/base/core/java/android/app/Activity.java
index f6ecec3..1696a5e 100644
--- a/base/core/java/android/app/Activity.java
+++ b/base/core/java/android/app/Activity.java
@@ -117,7 +117,7 @@ import java.lang.annotation.RetentionPolicy;import java.util.ArrayList;import java.util.HashMap;import java.util.List;
-
+t.BroadcastReceiver;/*** An activity is a single, focused thing that the user can do. Almost all* activities interact with the user, so the Activity class takes care of
@@ -1742,6 +1742,20 @@ public class Activity extends ContextThemeWrapperpublic void onConfigurationChanged(Configuration newConfig) {if (DEBUG_LIFECYCLE) Slog.v(TAG, "onConfigurationChanged " + this + ": " + newConfig);mCalled = true;
+ Intent mIntent = new Intent("Configuration_orientation");+ if (Resources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
+ mIntent.putExtra("ori_status",1);
+ Log.d("houcongxi","ori_status-------1111111111");
+ this.sendBroadcast(mIntent);
+ }else{
+ mIntent.putExtra("ori_status",2);
+ Log.d("houcongxi","ori_status-------2222222222");
+ this.sendBroadcast(mIntent);
+ }mFragments.dispatchConfigurationChanged(newConfig);diff --git a/base/core/java/android/provider/Settings.java b/base/core/java/android/provider/Settings.java
index 7222da6..daf099e 100644
--- a/base/core/java/android/provider/Settings.java
+++ b/base/core/java/android/provider/Settings.java
@@ -1505,6 +1505,11 @@ public final class Settings {// At one time in System, then Global, but now back in SecureMOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS);
+ MOVED_TO_SECURE.add(Secure.DEV_FORCE_SHOW_NAVBAR);}private static final HashSet<String> MOVED_TO_GLOBAL;
@@ -4269,6 +4274,18 @@ public final class Settings {@Deprecatedpublic static final String ANDROID_ID = Secure.ANDROID_ID;+ /**
+ * Developer options - Navigation Bar show switch
+ * @deprecated Use {@link android.provider.Settings.Secure#DEV_FORCE_SHOW_NAVBAR} instead
+ * @hide
+ */
+ @Deprecated
+ public static final String DEV_FORCE_SHOW_NAVBAR = Secure.DEV_FORCE_SHOW_NAVBAR;
+/*** @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead*/
@@ -5073,6 +5090,16 @@ public final class Settings {*/public static final String ANDROID_ID = "android_id";+ /**
+ * Developer options - Navigation Bar show switch
+ * @hide
+ */
+ public static final String DEV_FORCE_SHOW_NAVBAR = "dev_force_show_navbar";
+/*** @deprecated Use {@link android.provider.Settings.Global#BLUETOOTH_ON} instead*/
diff --git a/base/core/java/android/view/ViewRootImpl.java b/base/core/java/android/view/ViewRootImpl.java
index 1ffc935..5c16de7 100644
--- a/base/core/java/android/view/ViewRootImpl.java
+++ b/base/core/java/android/view/ViewRootImpl.java
@@ -111,6 +111,13 @@ t.Intent;import com.android.featureoption.FeatureOption;+t.IntentFilter;
+t.BroadcastReceiver;
+/*** The top of a view hierarchy, implementing the needed protocol between View* and the WindowManager. This is for the most part an internal implementation
@@ -454,12 +461,25 @@ public final class ViewRootImpl implements ViewParent,private static final String DUMP_IMAGE_PTAH = "/data/dump/";private static final String DATE_FORMAT_STRING = "yyyyMMdd_hhmmss";private static final String DUMP_IMAGE_FORMAT = ".png";
-
+ private int screenWidth, screenHeight;
+ private int ori;
+ private int orl;public ViewRootImpl(Context context, Display display) {mContext = context;mWindowSession = WindowSession();mDisplay = display;mBasePackageName = BasePackageName();
+ Width();
+ Height();
+ Log.d("houcongxi","screenWidth:"+screenWidth+"---,screenHeight:"+screenHeight);mDisplayAdjustments = DisplayAdjustments();@@ -496,6 +516,17 @@ public final class ViewRootImpl implements ViewParent,mDisplayManager = (SystemService(Context.DISPLAY_SERVICE);loadSystemProperties();
+ Configuration Resources().getConfiguration();
+ orl= ientation;
+ Log.d("houcongxi",orl+"+++++++++++++++++++++++");
+ IntentFilter mOriIntentFilter = new IntentFilter();
+ mOriIntentFilter.addAction("Configuration_orientation");
+ isterReceiver(mOriBroadcastReceiver, mOriIntentFilter);
+/*** M: increase instance count and check log property to determine* whether to enable/disable log system. @{
@@ -514,6 +545,20 @@ public final class ViewRootImpl implements ViewParent,/** @} */}
+ private BroadcastReceiver mOriBroadcastReceiver = new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = Action();
+ if(action.equals("Configuration_orientation")){
+ IntExtra("ori_status",0);
+ Log.d("houcongxi",ori+"ori++++++++++++++");
+ }
+ }
+ };public static void addFirstDrawHandler(Runnable callback) {synchronized (sFirstDrawHandlers) {if (!sFirstDrawComplete) {
@@ -4744,7 +4789,15 @@ public final class ViewRootImpl implements ViewParent,}return FORWARD;}
-
+ private float startY = 0;
+ private float endY = 0;
+ private float startX = 0;
+ private float endX = 0;
+
@@ -4761,12 +4814,34 @@ public final class ViewRootImpl implements ViewParent,final MotionEvent event = (MotionEvent)q.mEvent;mAttachInfo.mUnbufferedDispatchRequested = false;boolean handled = mView.dispatchPointerEvent(event);
+ int action = Action();+ switch (action & MotionEvent.ACTION_MASK) {
+ case MotionEvent.ACTION_DOWN:
+ startY = Y();
+ startX = X();
+ break;
+ case MotionEvent.ACTION_UP:
+ endY = Y();
+ endX = X();
+ Intent mIntent = new Intent("forceAddNavigationBar");
+ if(startY - endY > 8&&(endY>screenHeight-460)&&(ori==1||orl==1)){
+ Log.d("houcongxi","Swipe up");
+ mContext.sendBroadcast(mIntent);
+ }else if(startX - endX > 8&&(endX>screenWidth-460&&(ori==2||orl==2))){
+ Log.d("houcongxi","swipe left");
+ mContext.sendBroadcast(mIntent);
+ }
+ break;
+ }if(FeatureOption.VANZO_FEATURE_GOLBAL_3FINGER_SCREENSHOT){
- int action = Action();PointerCount() > 3){mPointerCount = false;mThreeClick = true;
diff --git a/base/packages/SettingsProvider/res/l b/base/packages/SettingsProvider/res/l
index 5d7ea01..71f289f 100644
--- a/base/packages/SettingsProvider/res/l
+++ b/base/packages/SettingsProvider/res/l
@@ -184,6 +184,9 @@Override to disable immersive mode confirmation for certain packages. --><string name="def_immersive_mode_confirmations" translatable="false"></string>+ <!-- Defaults for Settings.System.DEV_FORCE_SHOW_NAVBAR. -->
+ <integer name="def_force_disable_navkeys">0</integer>
+<!-- Default for Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE --><integer name="def_wifi_scan_always_available">0</integer>diff --git a/base/packages/SystemUI/res/layout/l b/base/packages/SystemUI/res/layout/l
index c92ba45..d98d4f0 100644
--- a/base/packages/SystemUI/res/layout/l
+++ b/base/packages/SystemUI/res/layout/l
@@ -43,7 +43,23 @@<!-- navigation controls --><View
- android:layout_width="@dimen/navigation_side_padding"
+ android:id="@+id/divider_view"
+ android:layout_width="5dp"
+ android:layout_height="match_parent"
+ android:layout_weight="0"
+ android:visibility="invisible"
+ />
+ <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/collapse"
+ android:layout_width="35dp"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_hide_navigationbar_x"
+ android:layout_weight="0"
+ android:scaleType="center"
+ android:contentDescription="@string/accessibility_back"
+ />
+
+ <View
+ android:layout_width="10dp"android:layout_height="match_parent"android:layout_weight="0"android:visibility="invisible"
@@ -56,6 +72,7 @@android:layout_weight="0"android:scaleType="center"android:contentDescription="@string/accessibility_back"
+ android:paddingRight="-20dp"/><Viewandroid:layout_width="0dp"
@@ -72,6 +89,7 @@android:layout_weight="0"android:scaleType="center"android:contentDescription="@string/accessibility_home"
+ android:paddingRight="-20dp"/><Viewandroid:layout_width="0dp"
@@ -86,6 +104,7 @@android:layout_weight="0"android:scaleType="center"android:contentDescription="@string/accessibility_recent"
+ android:paddingRight="-20dp"/><FrameLayoutandroid:layout_width="@dimen/navigation_side_padding"
@@ -260,6 +279,21 @@android:contentDescription="@string/accessibility_back"/><View
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:visibility="invisible"
+ />
+ <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/collapse"
+ android:layout_height="@dimen/navigation_key_width"
+ android:layout_width="match_parent"
+ android:src="@drawable/ic_hide_navigationbar_y"
+ android:scaleType="center"
+ android:layout_weight="0"
+ android:contentDescription="@string/accessibility_back"
+ />
+ <View
+ android:id="@+id/divider_view"android:layout_height="@dimen/navigation_side_padding"android:layout_width="match_parent"android:layout_weight="0"
diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index a0d07a0..24dcf14 100644
--- a/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -68,6 +68,15 @@ diatek.multiwindow.MultiWindowProxy;DefaultNavigationBarPlugin;INavigationBarPlugin;import android.os.UserHandle;
+t.Intent;
+import android.provider.Settings;
+t.BroadcastReceiver;
+import android.os.SystemProperties;
+t.IntentFilter;@@ -214,6 +223,13 @@ public class NavigationBarView extends LinearLayout {public NavigationBarView(Context context, AttributeSet attrs) {super(context, attrs);
+ IntentFilter mAddIntentFilter = new IntentFilter();
+ mAddIntentFilter.addAction("refresh_navigationbar_for_ic");
+ isterReceiver(mrBroadcastReceiver, mAddIntentFilter);mDisplay = ((SystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
@@ -544,6 +560,17 @@ public class NavigationBarView extends LinearLayout {mCurrentView = mRotatedViews[Surface.ROTATION_0];getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
+ if (Boolean("persist.sys.navigationbarstatus", true)) {
+ getCollapseButton().setOnClickListener(mCollapseClickListener);
+ } else {
+ getCollapseButton().setVisibility(View.GONE);
+ getDividerView().setVisibility(View.GONE);
+ }updateRTLOrder();}
@@ -565,6 +592,22 @@ public class NavigationBarView extends LinearLayout {mDeadZone = (DeadZone) mCurrentView.findViewById(R.id.deadzone);
+ if (Boolean("persist.sys.navigationbarstatus", true)) {
+ // if (getCollapseButton() != null) {
+ getCollapseButton().setOnClickListener(mCollapseClickListener);
+ // }
+ } else {
+ // if (getCollapseButton() != null) {
+ getCollapseButton().setVisibility(View.GONE);
+ getDividerView().setVisibility(View.GONE);
+ // }
+ }
+// force the low profile & disabled states into compliancemBarTransitions.init();setDisabledFlags(mDisabledFlags, true /* force */);
@@ -787,6 +830,53 @@ public class NavigationBarView extends LinearLayout {public interface OnVerticalChangedListener {void onVerticalChanged(boolean isVertical);}
+ public View getCollapseButton() {
+ return mCurrentView.findViewById(llapse);
+ }
+
+ public View getDividerView() {
+ return mCurrentView.findViewById(R.id.divider_view);
+ }
+
+ private final OnClickListener mCollapseClickListener = new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Settings.Secure.ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0);
+ Log.d("houcongxi","onclick:"+ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR,-1));
+ Intent mIntent = new Intent("removeNavigationBar");
+ if (Boolean("persist.sys.navigationbarstatus", false)) {
+ mContext.sendBroadcast(mIntent);
+ }
+ }
+ };
+ private BroadcastReceiver mrBroadcastReceiver = new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = Action();
+ //让他消失,然后在出现的广播,动画以后做
+ Intent mIntent = new Intent("removeNavigationBar");
+ mContext.sendBroadcast(mIntent);
+ new Handler().postDelayed(new Runnable(){
+ public void run() {
+ Intent nIntent = new Intent("forceAddNavigationBar");
+ mContext.sendBroadcast(nIntent);
+ }
+ }, 700);
+
+ /* if(getCollapseButton().getVisibility()==View.VISIBLE){
+ getCollapseButton().setVisibility(View.GONE);
+ getDividerView().setVisibility(View.GONE);
+ }else{
+ getCollapseButton().setOnClickListener(mCollapseClickListener);
+ getCollapseButton().setVisibility(View.VISIBLE);
+ getDividerView().setVisibility(View.VISIBLE);
+ }*/
+ }
+ };/// M: add for multi window @{private BroadcastReceiver mFloatWindowBroadcastReceiver = new BroadcastReceiver() {
diff --git a/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 392b6b7..2113397 100644
--- a/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -416,6 +416,43 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,// ensure quick settings is disabled until the current user makes it through the setup wizardprivate boolean mUserSetup = false;
+
+ private void forceAddNavigationBar() {
+ // If we have no Navbar view and we should have one, create it
+ if (mNavigationBarView != null) {
+ return;
+ }
+ removeNavigationBar();
+ android.util.Log.e("houcongxi", "================="+mNavigationBarView);
+
+ mNavigationBarView =
+ (NavigationBarView) View.inflate(mContext, R.layout.navigation_bar, null);
+
+ mNavigationBarView.setDisabledFlags(mDisabled1);
+ //mNavigationBarView.setDisabledFlags(mDisabled2);
+ mNavigationBarView.setBar(this);
+ mNavigationBarView.setBackgroundColor(0x00000000);
+ //mNavigationBarView.invalidate();
+
+ android.util.Log.e("houcongxi", "========222========"+mNavigationBarView);
+ addNavigationBar();
+ repositionNavigationBar();
+
+ }
+ private void removeNavigationBar() {
+ if (mNavigationBarView == null) return;
+ if (mNavigationBarView != null) {
+ veViewImmediate(mNavigationBarView);
+ mNavigationBarView = null;
+ }
+
+ //veView(mNavigationBarView);
+ //mNavigationBarView = null;
+ }private ContentObserver mUserSetupObserver = new ContentObserver(new Handler()) {@Overridepublic void onChange(boolean selfChange) {
@@ -1123,6 +1160,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));mStatusBarPlmnPlugin.addPlmn((LinearLayout)mStatusBarView.findViewById(R.id.status_bar_contents), mContext);
+ IntentFilter mAddIntentFilter = new IntentFilter();
+ mAddIntentFilter.addAction("removeNavigationBar");
+ isterReceiver(mrBroadcastReceiver, mAddIntentFilter);
+
+ IntentFilter mRemIntentFilter = new IntentFilter();
+ mRemIntentFilter.addAction("forceAddNavigationBar");
+ isterReceiver(mrBroadcastReceiver, mRemIntentFilter);return mStatusBarView;}
@@ -4514,6 +4562,31 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,}/// M: Support "Operator plugin - Customize Carrier Label for PLMN". @}+ private BroadcastReceiver mrBroadcastReceiver = new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = Action();
+ int num=ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR,0);
+ boolean visible=(num==1)?true:false;
+ Log.d("houcongxi","===visible:"+visible);
+ if(action.equals("removeNavigationBar")){
+ Settings.Secure.ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0);
+ removeNavigationBar();
+ }else if(action.equals("forceAddNavigationBar")&&!visible){
+ forceAddNavigationBar();
+ Settings.Secure.ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 1);
+
+ int num2=ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR,1);
+ boolean visible2=(num2==1)?true:false;
+ Log.d("houcongxi","-----visible2:"+visible2);
+ }
+ }
+ };
+// End of Vanzo:houcongxi
+/// M:add for multi window @{public void registerMWProxyAgain(){
diff --git a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
848034 100644
--- a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -1859,8 +1859,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {String navBarOverride = ("qemu.hw.mainkeys");if ("1".equals(navBarOverride)) {mHasNavigationBar = false;
+ Settings.Secure.ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 0);} else if ("0".equals(navBarOverride)) {mHasNavigationBar = true;
+ Settings.Secure.ContentResolver(),Settings.Secure.DEV_FORCE_SHOW_NAVBAR, 1);}// For demo purposes, allow the rotation of the HDMI display to be controlled.
本文发布于:2024-02-02 23:29:14,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170688775347163.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |