Android 7.1 设置不支持遥控操作?

简介: Android 7.1 设置不支持遥控操作?

平台


RK3288 + Android 7.1


问题


通过遥控操作打开设置后, 无法使用 上, 下, 左, 右, 确认键进行操作.


分析


类似的问题, 在之前有碰到过, 原因是焦点停留在了一些不可控的控件上.


查下当前界面的焦点:

dumpsys activity com.android.settings/.Settings


TASK com.android.settings id=11
  ACTIVITY com.android.settings/.Settings d201ac0 pid=643
    Local Activity 1e194fb State:
      mResumed=true mStopped=false mFinished=false
      mChangingConfigurations=false
      mCurrentConfig={1.0 dualscreenflag=DISABLE ?mcc?mnc [zh_CN] ldltr sw1080dp w1920dp h1000dp 160dpi xlrg long land -touch -keyb/v/h -nav/h s.4}
      mLoadersStarted=true
      Loader Manager 4fbf7ac:
        Active Loaders:
          #1: LoaderInfo{fc70c75 #1 : PrintServicesLoader{50a240a}}
            mId=1 mArgs=null
            mCallbacks=com.android.settings.search.DynamicIndexableContentMonitor@d2caec4
            mLoader=PrintServicesLoader{50a240a id=1}
              mId=1 mListener=LoaderInfo{fc70c75 #1 : PrintServicesLoader{50a240a}}
              mStarted=true mContentChanged=false mProcessingChange=false
            mHaveData=true  mDeliveredData=true
            mData=[]
            mStarted=true mReportNextStart=false mDestroyed=false
            mRetaining=false mRetainingStarted=false mListenerRegistered=true
      Active Fragments in 608947b:
        #0: DashboardContainerFragment{106e298 #0 id=0x7f110224}
          mFragmentId=#7f110224 mContainerId=#7f110224 mTag=null
          mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
          mAdded=true mRemoving=false mFromLayout=false mInLayout=false
          mHidden=false mDetached=false mMenuVisible=true mHasMenu=true
          mRetainInstance=false mRetaining=false mUserVisibleHint=true
          mFragmentManager=FragmentManager{608947b in HostCallbacks{288faf1}}
          mHost=android.app.Activity$HostCallbacks@288faf1
          mArguments=Bundle[{:settings:select_settings_tab=null}]
          mContainer=android.widget.FrameLayout{82e76d6 V.E...... ........ 0,0-1920,936 #7f110224 app:id/main_content}
          mView=com.android.settings.widget.RtlCompatibleViewPager{381fd57 VFED..... ........ 0,0-1920,936 #7f11007e app:id/pager}
          Child FragmentManager{1d39044 in DashboardContainerFragment{106e298}}:
            Active Fragments in 1d39044:
              #0: DashboardSummary{5a1552d #0 id=0x7f11007e android:switcher:2131820670:0}
                mFragmentId=#7f11007e mContainerId=#7f11007e mTag=android:switcher:2131820670:0
                mState=5 mIndex=0 mWho=android:fragment:0:0 mBackStackNesting=0
                mAdded=true mRemoving=false mFromLayout=false mInLayout=false
                mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
                mRetainInstance=false mRetaining=false mUserVisibleHint=true
                mFragmentManager=FragmentManager{1d39044 in DashboardContainerFragment{106e298}}
                mHost=android.app.Activity$HostCallbacks@288faf1
                mParentFragment=DashboardContainerFragment{106e298 #0 id=0x7f110224}
                mContainer=com.android.settings.widget.RtlCompatibleViewPager{381fd57 VFED..... ........ 0,0-1920,936 #7f11007e app:id/pager}
                mView=com.android.settings.dashboard.conditional.FocusRecyclerView{b732a62 VFED.V... .F...... 0,0-1920,936 #7f1100e3 app:id/dashboard_container}
                Child FragmentManager{bf17f3 in DashboardSummary{5a1552d}}:
                  FragmentManager misc state:
                    mHost=android.app.Activity$HostCallbacks@288faf1
                    mContainer=android.app.Fragment$1@39b6cb0
                    mParent=DashboardSummary{5a1552d #0 id=0x7f11007e android:switcher:2131820670:0}
                    mCurState=5 mStateSaved=false mDestroyed=false
            Added Fragments:
              #0: DashboardSummary{5a1552d #0 id=0x7f11007e android:switcher:2131820670:0}
            FragmentManager misc state:
              mHost=android.app.Activity$HostCallbacks@288faf1
              mContainer=android.app.Fragment$1@46b1729
              mParent=DashboardContainerFragment{106e298 #0 id=0x7f110224}
              mCurState=5 mStateSaved=false mDestroyed=false
      Added Fragments:
        #0: DashboardContainerFragment{106e298 #0 id=0x7f110224}
      Fragments Created Menus:
        #0: DashboardContainerFragment{106e298 #0 id=0x7f110224}
      FragmentManager misc state:
        mHost=android.app.Activity$HostCallbacks@288faf1
        mContainer=android.app.Activity$HostCallbacks@288faf1
        mCurState=5 mStateSaved=false mDestroyed=false
    ViewRoot:
      mAdded=true mRemoved=false
      mConsumeBatchedInputScheduled=false
      mConsumeBatchedInputImmediatelyScheduled=false
      mPendingInputEventCount=0
      mProcessInputEventsScheduled=false
      mTraversalScheduled=false      mIsAmbientMode=false
      android.view.ViewRootImpl$NativePreImeInputStage: mQueueLength=0
      android.view.ViewRootImpl$ImeInputStage: mQueueLength=0
      android.view.ViewRootImpl$NativePostImeInputStage: mQueueLength=0
    Choreographer:
      mFrameScheduled=false
      mLastFrameTime=2865695 (727294 ms ago)
    View Hierarchy:
      DecorView@55d8aae[Settings]
        android.widget.LinearLayout{9a9404f V.E...... ........ 0,0-1920,1024}
          android.view.ViewStub{ac2a3dc G.E...... ......I. 0,0-0,0 #1020400 android:id/action_mode_bar_stub}
          android.widget.FrameLayout{af4fce5 V.E...... ........ 0,0-1920,1024 #1020002 android:id/content}
            android.support.v4.widget.DrawerLayout{d7ba3ba VFE...... ........ 0,0-1920,1024 #7f110227 app:id/drawer_layout}
              android.widget.LinearLayout{563926b V.E...... ........ 0,0-1920,1024 #7f110228 app:id/content_parent}
                android.widget.FrameLayout{bc421c8 V.E...... ........ 0,24-1920,88}
                  android.widget.Toolbar{d7d8261 V.E...... ........ 0,0-1920,64 #7f110054 app:id/action_bar}
                    android.widget.TextView{4304186 V.ED..... ........ 16,18-56,46}
                    android.widget.ActionMenuView{26ea47 V.E...... ........ 1864,0-1912,64}
                      com.android.internal.view.menu.ActionMenuItemView{5dd9274 VFED..CL. ........ 0,8-48,56 #7f110332 app:id/search}
                android.widget.FrameLayout{baee39d V.E...... ........ 0,88-1920,88 #7f110229 app:id/content_header_container}
                android.widget.FrameLayout{b3ef012 V.E...... ........ 0,88-1920,1024 #7f11022a app:id/content_frame}
                  android.widget.FrameLayout{82e76d6 V.E...... ........ 0,0-1920,936 #7f110224 app:id/main_content}
                    com.android.settings.widget.RtlCompatibleViewPager{381fd57 VFED..... ........ 0,0-1920,936 #7f11007e app:id/pager}
                      com.android.settings.dashboard.conditional.FocusRecyclerView{b732a62 VFED.V... .F...... 0,0-1920,936 #7f1100e3 app:id/dashboard_container}
                        android.widget.LinearLayout{5dea152 VFE...C.. ........ 160,0-1760,48}
                          android.widget.ImageView{6dde3e3 V.ED..... ........ 16,14-40,38 #1020006 android:id/icon}
                          android.widget.TextView{c7b61e0 V.ED..... ........ 72,16-100,35 #1020016 android:id/title}
                          android.widget.TextView{b9b1c99 V.ED..... ........ 100,16-1600,35 #1020010 android:id/summary}
                        android.widget.LinearLayout{959cca1 VFE...C.. ........ 160,48-1760,120}
                          android.widget.ImageView{b17fb5e V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.RelativeLayout{80db3f V.E...... ........ 72,15-1560,56}
                            android.widget.TextView{b64bc0c V.ED..... ........ 0,0-96,22 #1020016 android:id/title}
                            android.widget.TextView{877e955 V.ED..... ........ 0,22-84,41 #1020010 android:id/summary}
                          android.widget.ImageView{e46f6a V.ED..C.. ........ 1560,8-1600,64 #7f110247 app:id/overflow}
                        android.widget.LinearLayout{6511b4 VFE...C.. ........ 160,120-1760,192}
                          android.widget.ImageView{131ec5b V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.RelativeLayout{1a78cf8 V.E...... ........ 72,15-1560,56}
                            android.widget.TextView{11ac5d1 V.ED..... ........ 0,0-64,22 #1020016 android:id/title}
                            android.widget.TextView{1521836 V.ED..... ........ 0,22-140,41 #1020010 android:id/summary}
                          android.widget.ImageView{318f337 V.ED..C.. ........ 1560,8-1600,64 #7f110247 app:id/overflow}
                        android.widget.LinearLayout{936cfa V.E...... ........ 160,192-1760,240 #7f1100e4 app:id/category}
                          android.widget.TextView{f4480a4 V.ED..... ........ 0,0-1600,40 #1020016 android:id/title}
                        android.widget.LinearLayout{eabde87 VFE...C.. ........ 160,240-1760,312 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{234ee0d V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{c1f81c2 V.E...... ........ 72,25-1600,47}
                            android.widget.TextView{ff8bd3 V.ED..... ........ 0,0-44,22 #1020016 android:id/title}
                            android.widget.TextView{19b0310 G.ED..... ......I. 0,0-0,0 #1020010 android:id/summary}
                        android.widget.LinearLayout{96cec8f VFE...C.. ........ 160,312-1760,384 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{84f5e09 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{c67f80e V.E...... ........ 72,15-1600,56}
                            android.widget.TextView{ead122f V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
                            android.widget.TextView{a95403c V.ED..... ........ 0,22-58,41 #1020010 android:id/summary}
                        android.widget.LinearLayout{31b9520 VFE...C.. ........ 160,384-1760,456 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{586d1c5 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{1af871a V.E...... ........ 72,15-1600,56}
                            android.widget.TextView{b02a24b V.ED..... ........ 0,0-96,22 #1020016 android:id/title}
                            android.widget.TextView{e942428 V.ED..... ........ 0,22-126,41 #1020010 android:id/summary}
                        android.widget.LinearLayout{8552325 VFE...C.. ........ 160,456-1760,528 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{707c541 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{daefae6 V.E...... ........ 72,25-1600,47}
                            android.widget.TextView{7d71827 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
                            android.widget.TextView{51b5ad4 G.ED..... ......I. 0,0-0,0 #1020010 android:id/summary}
                        android.widget.LinearLayout{c5ddc23 V.E...... ........ 160,528-1760,576 #7f1100e4 app:id/category}
                          android.widget.TextView{64a747d V.ED..... ........ 0,0-1600,40 #1020016 android:id/title}
                        android.widget.LinearLayout{d55c2ab VFE...C.. ........ 160,576-1760,648 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{2dfdf72 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{3930fc3 V.E...... ........ 72,15-1600,56}
                            android.widget.TextView{83d5040 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
                            android.widget.TextView{20edb79 V.ED..... ........ 0,22-170,41 #1020010 android:id/summary}
                        android.widget.LinearLayout{a162d08 VFE...C.. ........ 160,648-1760,720 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{fc880be V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{8ce51f V.E...... ........ 72,15-1600,56}
                            android.widget.TextView{ec7306c V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
                            android.widget.TextView{b18b635 V.ED..... ........ 0,22-170,41 #1020010 android:id/summary}
                        android.widget.LinearLayout{d1b5ec6 VFE...C.. ........ 160,720-1760,792 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{307eaca V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{624b43b V.E...... ........ 72,15-1600,56}
                            android.widget.TextView{d2ce758 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
                            android.widget.TextView{ab80b1 V.ED..... ........ 0,22-115,41 #1020010 android:id/summary}
                        android.widget.LinearLayout{90e7b1c VFE...C.. ........ 160,792-1760,864 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{421e996 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{7a05917 V.E...... ........ 72,15-1600,56}
                            android.widget.TextView{9352104 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
                            android.widget.TextView{8c676ed V.ED..... ........ 0,22-122,41 #1020010 android:id/summary}
                        android.widget.LinearLayout{ba591dd VFE...C.. ........ 160,864-1760,936 #7f1100e6 app:id/dashboard_tile}
                          android.widget.ImageView{d0b0922 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
                          android.widget.LinearLayout{cc76fb3 V.E...... ........ 72,25-1600,47}
                            android.widget.TextView{c654970 V.ED..... ........ 0,0-64,22 #1020016 android:id/title}
                            android.widget.TextView{2094e9 G.ED..... ......I. 0,0-0,0 #1020010 android:id/summary}
              android.widget.ListView{74956e IFED.VC.. ......ID -300,0-0,1024 #7f11022b app:id/left_drawer}
                android.widget.Space{83f540f I.ED..... ......I. 0,0-300,32 #7f11003e app:id/spacer}
                android.widget.LinearLayout{12d8c9c V.E...... ......ID 0,31-300,79 #7f11011f app:id/tile_item}
                  android.widget.ImageView{de496a5 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{8d89a7a V.ED..... ......ID 72,11-162,36 #1020016 android:id/title}
                android.widget.LinearLayout{7a7222b V.E...... ......ID 0,78-300,138}
                  android.view.View{6d4d688 V.ED..... ......ID 0,8-300,9}
                  android.widget.TextView{72cf821 V.ED..... ......ID 0,9-300,60 #1020016 android:id/title}
                android.widget.LinearLayout{c45e446 V.E...... ......ID 0,137-300,185 #7f11011f app:id/tile_item}
                  android.widget.ImageView{973b607 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{824d334 V.ED..... ......ID 72,11-123,36 #1020016 android:id/title}
                android.widget.LinearLayout{e3ff55d V.E...... ......ID 0,184-300,232 #7f11011f app:id/tile_item}
                  android.widget.ImageView{ebfed2 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{48baba3 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{d5eea0 V.E...... ......ID 0,231-300,279 #7f11011f app:id/tile_item}
                  android.widget.ImageView{98b8a59 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{e67361e V.ED..... ......ID 72,11-180,36 #1020016 android:id/title}
                android.widget.LinearLayout{da35eff V.E...... ......ID 0,278-300,326 #7f11011f app:id/tile_item}
                  android.widget.ImageView{dbb54cc V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{e617315 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{7cc962a V.E...... ......ID 0,325-300,385}
                  android.view.View{658ec1b V.ED..... ......ID 0,8-300,9}
                  android.widget.TextView{3aef1b8 V.ED..... ......ID 0,9-300,60 #1020016 android:id/title}
                android.widget.LinearLayout{b732b91 V.E...... ......ID 0,384-300,432 #7f11011f app:id/tile_item}
                  android.widget.ImageView{a75eaf6 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{2102ef7 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{93d7164 V.E...... ......ID 0,431-300,479 #7f11011f app:id/tile_item}
                  android.widget.ImageView{f0defcd V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{d8dc082 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{c8ec393 V.E...... ......ID 0,478-300,526 #7f11011f app:id/tile_item}
                  android.widget.ImageView{f123fd0 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{516bbc9 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{e5b62ce V.E...... ......ID 0,525-300,573 #7f11011f app:id/tile_item}
                  android.widget.ImageView{e5805ef V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{32388fc V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{8c64b85 V.E...... ......ID 0,572-300,620 #7f11011f app:id/tile_item}
                  android.widget.ImageView{54eddda V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{ac9120b V.ED..... ......ID 72,11-144,36 #1020016 android:id/title}
                android.widget.LinearLayout{a9e38e8 V.E...... ......ID 0,619-300,667 #7f11011f app:id/tile_item}
                  android.widget.ImageView{6251b01 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{fccfda6 V.ED..... ......ID 72,11-106,36 #1020016 android:id/title}
                android.widget.LinearLayout{3f4c3e7 V.E...... ......ID 0,666-300,714 #7f11011f app:id/tile_item}
                  android.widget.ImageView{e91fb94 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{747663d V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{abb4e32 V.E...... ......ID 0,713-300,761 #7f11011f app:id/tile_item}
                  android.widget.ImageView{3fb783 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{75d3d00 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{9492939 V.E...... ......ID 0,760-300,808 #7f11011f app:id/tile_item}
                  android.widget.ImageView{9cc1b7e V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{dbc48df V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{2d9292c V.E...... ......ID 0,807-300,855 #7f11011f app:id/tile_item}
                  android.widget.ImageView{50a1ff5 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{78a718a V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{f4693fb V.E...... ......ID 0,854-300,914}
                  android.view.View{145ac18 V.ED..... ......ID 0,8-300,9}
                  android.widget.TextView{7a9c671 V.ED..... ......ID 0,9-300,60 #1020016 android:id/title}
                android.widget.LinearLayout{a261c56 V.E...... ......ID 0,913-300,961 #7f11011f app:id/tile_item}
                  android.widget.ImageView{f6074d7 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{4f571c4 V.ED..... ......ID 72,11-144,36 #1020016 android:id/title}
                android.widget.LinearLayout{6c358ad V.E...... ......ID 0,960-300,1008 #7f11011f app:id/tile_item}
                  android.widget.ImageView{8ffa7e2 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{4cd8773 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
                android.widget.LinearLayout{b9e630 V.E...... ......ID 0,1007-300,1055 #7f11011f app:id/tile_item}
                  android.widget.ImageView{c69d2a9 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
                  android.widget.TextView{ef4602e V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
        android.view.View{4ef27cf V.ED..... ........ 0,1024-1920,1080 #1020030 android:id/navigationBarBackground}
        android.view.View{10f355c V.ED..... ........ 0,0-1920,24 #102002f android:id/statusBarBackground}
    Looper (main, tid 1) {db1cb03}
      (Total messages: 0, polling=false, quitting=false)


重点看下 View Hierarchy:

当前的焦点停留在: com.android.settings.dashboard.conditional.FocusRecyclerView{b732a62 VFED.V… .F… 0,0-1920,936 #7f1100e3 app:id/dashboard_container}

而我们预期的是停留在 FocusRecyclerView 的子控件中, 于是, 简单的处理下按键处理:

|–packages/apps/Settings/src/com/android/settings/SettingsActivity.java


diff --git a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java b/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
index e04c90a..60f6ca0 100755
--- a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
+++ b/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
@@ -714,6 +714,22 @@ public class SettingsActivity extends SettingsDrawerActivity
                 + " ms");
     }
+       @Override
+    public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
+        View focus = getCurrentFocus();
+               if(focus != null && keyCode == android.view.KeyEvent.KEYCODE_DPAD_DOWN){
+                       int listRootId = R.id.dashboard_container;
+                       if(listRootId == focus.getId()){
+                               //Focus list parent.
+                               com.android.settings.dashboard.conditional.FocusRecyclerView frv = (com.android.settings.dashboard.conditional.FocusRecyclerView)findViewById(listRootId);
+                               View first = frv.getChildAt(0);
+                               first.requestFocus();
+                       }
+               }
+        return super.onKeyDown(keyCode, event);
+    }
+
     public void setDisplaySearchMenu(boolean displaySearch) {
         if (displaySearch != mDisplaySearch) {
             mDisplaySearch = displaySearch;


相关文章
|
6月前
|
XML API Android开发
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
本文介绍了如何使用androidx.preference库快速创建具有一级和二级菜单的Android设置界面的步骤和示例代码。
207 1
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
|
9月前
|
数据库 Android开发
Android 通过升级SettingsProvider数据强制覆盖用户的设置项
Android 通过升级SettingsProvider数据强制覆盖用户的设置项 【5月更文挑战第7天】
258 5
|
5月前
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
390 3
|
6月前
|
Android开发
Android 配置蓝牙遥控器键值
本文详细介绍了Android系统中配置蓝牙遥控器键值的步骤,包括查看设备号、配置键位映射文件(kl文件)、部署kl文件以及调试过程,确保蓝牙遥控器的按键能正确映射到Android系统对应的按键功能。
622 1
|
6月前
|
Java 网络安全 开发工具
UNITY与安卓⭐一、Android Studio初始设置
UNITY与安卓⭐一、Android Studio初始设置
|
7月前
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
228 12
|
5月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
207 0
|
6月前
|
开发工具 Android开发
Android项目架构设计问题之外部客户方便地设置回调如何解决
Android项目架构设计问题之外部客户方便地设置回调如何解决
43 0
|
6月前
|
数据可视化 Java 数据挖掘
Android项目架构设计问题之设置RecyclerView的LayoutManager如何解决
Android项目架构设计问题之设置RecyclerView的LayoutManager如何解决
56 0
|
7月前
|
Java Android开发
android 设置系统时间的流程
android 设置系统时间的方法
561 2

热门文章

最新文章

  • 1
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    Android历史版本与APK文件结构
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 1
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    21
  • 2
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    38
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    109
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    39
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    54
  • 6
    Android历史版本与APK文件结构
    146
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    46
  • 8
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    39
  • 9
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    66
  • 10
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    47