導航:首頁 > 操作系統 > android組件隱藏

android組件隱藏

發布時間:2022-12-20 11:56:59

android之隱藏api介紹

..

Android P 引入了針對非 SDK 介面(俗稱為隱藏API)的使用限制。這是繼 Android N上針對 NDK 中私有庫的鏈接限制之後的又一次重大調整。

從今以後,不論是native層的NDK還是 java層的SDK,我們只能使用Google提供的、公開的標准介面。這對開發者以及用戶乃至整個Android生態,當然是一件好事。

但這也同時意味著Android上的各種黑科技有可能會逐漸走向消亡。

公共 SDK 介面是在 Android 框架軟體包索引 中記錄的那些介面

從 Android Pie 開始,對某些隱藏類、方法和欄位的訪問受到限制在 Pie 之前,通過簡單地使用反射來使用這些隱藏的非 SDK 組件非常容易。

但是,現在當嘗試訪問時,面向 API 28 (Pie) 或更高版本的應用程序將遇到 ClassNotFoundException、NoSuchMethodError 或 NoSuchFieldException Activity#createDialog() 。

先來看看系統是如何實現這個限制的。

通過反射或者JNI訪問非公開介面時會觸發警告/異常等,那麼不妨跟蹤一下反射的流程,看看系統到底在哪一步做的限制。

先來看一下 java.lang.Class.getDeclaredMethod(String) :

其中看一下 ShouldBlockAccessToMember 的調用,如果它返回false,那麼直接返回 nullptr ,上層就會拋 NoSuchMethodXXX 異常;也就觸發系統的限制了。

源碼如下:

繼續跟蹤下 GetMemberAction方法 :

繼續跟蹤GetMemberActionImpl方法:

其中調用到了

只要 IsExempted 方法返回 true,就算這個方法在黑名單中,依然會被放行然後允許被調用。

IsExempted 方法:

繼續跟蹤傳遞進來的參數 runtime->GetHiddenApiExemptions() 發現也是 runtime 裡面的一個參數.

這樣就可以直接修改 hidden_api_exemptions_ 繞過去限制。

Java 層的,有一個對應的 VMRuntime.setHiddenApiExemptions 方法,通過 VMRuntime.setHiddenApiExemptions 設置下豁免條件,就能愉快滴使用反射了。

IsExempted 方法裡面調用 DoesPrefixMatch 方法。DoesPrefixMatch是對方法簽名進行前綴匹配。所有Java方法類的簽名都是以 L 開頭,這樣就可以直接傳個 L 進去,所有的隱藏API全部被赦免了!

另一種繞過 Android P以上非公開API限制的辦法

② android怎麼設置組件不可見

通常控制項的可見與不可見分為三種情況。
第一種 gone 表示不可見並且不佔用空間
第二種 visible 表示可見
第三種 invisible 表示不可見但是佔用空間

可見與不可見的表現形式有兩種。
在布局文件中:

[html] view plain
android:visibility="gone"
android:visibility="visible"
android:visibility="invisible"

在代碼中:

[java] view plain
setVisibility(View.Gone);
setVisibility(View.VISIBLE);
setVisibility(View.INVISIBLE);

③ android里怎麼實現在代碼中把一個布局給隱藏掉

設置布局的頂級View的visibility屬性View.VISIBLE和View.GONE

android:visibility此屬性意思是此視圖是否顯示,
其有三個屬性:visible顯示;invisible顯示黑背景條;gone不顯示

Android布局是應用界面開發的重要一環,在Android中,共有五種布局方式,分別是:LinearLayout (線性布局),FrameLayout(框架布
局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)。他們都是ViewGroup的子類,當然也是View的子類。
一、LinearLayout
線性布局,這個東西,從外框上可以理解為一個div,他首先是一個一個從上往下羅列在屏幕上。每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。
linearLayout中有一個重要的屬性 android:layout_weight="1",這個weight在垂直布局時,代錶行距;水平的時候代表列寬;weight值越大就越大。
線形布局中預覽和真機中完全一樣。
TextView佔一定的空間,沒有賦值也有一定的寬高,要特別注意。
二、FrameLayout
FrameLayout是最簡單的一個布局對象。它被定製為你屏幕上的一個空白備用區域,之後你可以在其中填充一個單一對象 — 比如,一張你要發布的圖片。所有的子元素將會固定在屏幕的左上角;你不能為FrameLayout中的一個子元素指定一個位置。後一個子元素將會直接在前一個子元素之上進行覆蓋填充,把它們部份或全部擋住(除非後一個子元素是透明的)。
三、AbsoluteLayout
AbsoluteLayout 這個布局方式很簡單,主要屬性就兩個 layout_x 和 layout_y 分別定義 這個組件的絕對位置。 即,以屏幕左上角為(0,0)的坐標軸的x,y值,當向下或向右移動時,坐標值將變大。AbsoluteLayout 沒有頁邊框,允許元素之間互相重疊(盡管不推薦)。我們通常不推薦使用 AbsoluteLayout ,除非你有正當理由要使用它,因為它使界面代碼太過剛性,以至於在不同的設備上可能不能很好地工作。
四、RelativeLayout
相對布局可以理解為某一個元素為參照物,來定位的布局方式。
android:layout_方向 = id 表示 在這個id對應的控制項的方向上(上|下)
android:layout_align方向 = id 表示和這個控制項的(上下左右)對齊
android: layout_to方向Of = id 表示在這個控制項的 左或者右
eg:
android:layout_below="@id/la1"/>
將當前控制項放置於id為la1 的控制項下方。
android:layout_alignParentRight="true"
使當前控制項的右端和父控制項的右端對齊。這里屬性值只能為true或false,默認false。
android:layout_marginLeft="10dip"
使當前控制項左邊空出相應的空間。
android:layout_toLeftOf="@id/true"
使當前控制項置於id為true的控制項的左邊。
android:layout_alignTop="@id/ok"
使當前控制項與id為ok的控制項上端對齊。
五、TableLayout
表格布局類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素。每個TableRow 都會定義一個 row (事實上,你可以定義其它的子對象,這在下面會解釋到)。TableLayout 容器不會顯示row 、cloumns 或cell 的邊框線。每個 row 擁有0個或多個的cell ;每個cell 擁有一個View 對象。表格由列和行組成許多的單元格。表格允許單元格為空。單元格不能跨列,這與HTML 中的不一樣。

④ 在android中,在main.xml中有一個ProgressBar進度條組件和一個button按鈕,在初始狀態讓該進度條隱藏怎麼

很簡單,先在mian.xml中把ProgressBar的visibility設置為invisible。然後在java文件中通過findViewById()找到ProgressBar的ID,假設為「progressBar」,最後在button的監聽函數中寫上progressBar.setVisibility(View.VISIBLE);就搞定了。

⑤ android的listview一鍵隱藏所有子項中的某一個組件

同時隱藏所有Items比隱藏單一的一個簡單點,直接一個boolean去控制就行。
在getView裡面去判斷這個值是true或false,來決定tv1和tv2的顯示/隱藏。
當你在ListView的上面,比如你是一個按鈕去實現的,那就是第一次點擊後,將boolean設成true,然後adapter.setNotifyChanged讓listView再去更新一下,相當於getView再走一次,就會重新判斷boolean去顯示或者隱藏tv1和tv2。你再點擊按鈕,同樣去修改boolean值,再adapter更新一下。

⑥ 第二章:Android組件講解-5

菜單

菜單是UI設計中經常使用的組件,提供了不同功能分組展示的能力,在人機交互中提供了人性化的操作。

Android中菜單分為兩種類型:

選項菜單(Option Menu)

上下文菜單(Context Menu)

選項菜單

創建選項菜單的3個步驟:

重寫Activity的onCreateOptionsMenu()方法,當第一次打開菜單時該方法被自動調用。

調用Menu的add()方法添加菜單項(MenuItem)

當菜單項被選擇時,重寫Activity的onOptionsItemSelected()方法來響應事件。

上下文菜單

上下文菜單的創建步驟:

覆蓋Activity的onCreateContextMenu()方法,調用Menu的add()方法添加菜單項(MenuItem)。

覆蓋onContextItemSelected()方法,響應菜單單擊事件。

在Activity的onCreate()方法中,調用registerForContextMenu()方法,為視圖注冊上下文菜單。

長按控制項

彈出式菜單(popupMenu)

彈出式菜單的創建步驟:

在res下創建menu文件夾,創建pop_menu.xml。

創建new PopupMenu(context,btn)。

調用getMenuInflater.inflater(R.menu.pop_menu,pop.getMenu())。

調用popmenu.show()

在res下穿件menu文件夾,

創建pop_menu.xml

ActionBar

一、顯示和隱藏

(1)獲取ActionBar

ActionBar actionBar = getSupportActionBar();

(2)判斷是否顯示

actionBar.isShowing()

(3)隱藏

actionBar.hide();

(4)顯示

actionBar.show();

二、添加圖標

1.always:總是顯示在界面上

2.never:不顯示在界面上,只讓出現在右邊的三個點中

3.ifRoom:如果有位置才顯示,不然就出現在右邊的三個點中

(1)res/menu創建menu_action.xml

(2)重寫onCreateOptionsMenu

(3)重寫onOptionsItemSelected

三、添加返回鍵

(1)onCreate方法添加

actionBar.setDisplayHomeAsUpEnabled(true);

(2)onOptionsItemSelected添加case

case android.R.id.home:

finish();

RecyclerView

1、添加依賴

implementation 'androidx.recyclerview:recyclerview:1.1.0'

2、初始化數據

for (int i= 0;i<20;i++){

list.add("標題"+i);

}

3、獲取組建

recycleview = findViewById(R.id.recycleview);

4、設置方向

//第一個參數:Context

//第二個參數:方向 RecyclerView.HORIZONTAL || VERTICAL

//第三個參數:是否倒敘false

LinearLayoutManager manager =

new LinearLayoutManager

(RecyclerActivity.this,RecyclerView.HORIZONTAL,false);

recycleview.setLayoutManager(manager);

5、新建一個類MyRecyclerAdapter

          在類里創建靜態方法MyViewHolder 繼承 RecyclerView.ViewHolder

6、MyRecyclerAdapter 繼承

RecyclerView.Adapter

7、創建構造方法

8、實現里邊的方法

              public MyViewHolder onCreateViewHolder

9、實現里邊的方法

      MyViewHolder 獲取組建

10、實現里邊的方法

      public void onBindViewHolder

      public int getItemCount

11、Activity里創建MyRecyclerAdapter,並設置

MyRecyclerAdapter adapter = new MyRecyclerAdapter(this,list);

recycleview.setAdapter(adapter);

12、MyRecyclerAdapter 創建介面 OnMyChildClick

並且聲明

並且提供設置介面的方法

13、RecyclerActivity的頁面實現介面OnMyChildClick,重寫里邊的方法      

14、RecyclerActivity的頁面設置完適配器,設置OnMyChildClick

15、MyRecyclerAdapter

onAttachedToRecyclerView 方法

獲取到recyclerView

16、MyRecyclerAdapter

public MyViewHolder onCreateViewHolder 方法

獲取到view後設置點擊事件

⑦ android 應用開發怎麼在應用中隱藏魅族的smarkbar組件

您好,
如果是最新版Flyme3或者Flyme4,進入設置——輔助功能里就有「智能隱藏smartbar」選項的,開啟後即可隱藏。

⑧ android 中下圖是那個組件如何實現

兩種方法實現,
一種是現在用的比較多的,左邊一組view
控制項,右邊則通過Fragment來實現,切換左邊的組件來實現切換右邊的fragment。
第二種就通過layout來實現,可以將右邊布局對應左邊每個item實現一個布局,切換到那個顯示對應的布局,隱藏其他兩個(這個是對於數據內容比較少的情況)

⑨ android能否讓一個布局或一個組件完全隱藏並且不佔位置

setVisible(VIew.GONE);//隱藏 並且不佔用界面空間
setVisible(VIew.VISIBLE);//控制項顯示
setVisible(VIew.INVISIBLE);//控制項隱藏 佔用界面空間

⑩ android 之 如何讓app沒有圖標

首先我們要獲得 PackageManager  的對象。

然後我們獲取本應用的名稱  

最後調用 pm的 設置組件使能  隱藏應用圖標

顯示應用圖標

大家可以點個關注,告訴我大家想要深入探究哪些問題,希望看到哪方面的文章,我可以免費給你寫專題文章。。哈哈。。。

希望大家多多支持。。你的一個關注,是我堅持的最大動力。。

閱讀全文

與android組件隱藏相關的資料

熱點內容
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292
黑馬程序員路徑大全 瀏覽:1000
saas平台PHP 瀏覽:333
雲伺服器科學計算配置怎麼選 瀏覽:649
jar解壓命令 瀏覽:609
php正則問號 瀏覽:299
無線已加密不可上網是怎麼了 瀏覽:464
什麼app可以免費做手機 瀏覽:376
異性下載什麼app 瀏覽:680
51單片機程序單步視頻 瀏覽:241
家庭寬頻如何連接伺服器 瀏覽:121
汽車高壓泵解壓 瀏覽:772