Android--初级
Android--初級
- 前言
- 一、初識?
- 1.目錄
- 2.res
- 3.Android程序簽名打包
- 4.反編譯獲取文件(失敗)
- 二、控件
- 1.文本標(biāo)簽TextView與按鈕Button
- 2.文本編輯框EditText
- 2.進(jìn)度條ProgressBar
- 4.復(fù)選按鈕CheckBox
- 5.單選組件RadioGroup與單選按鈕RadioButton
- 6.圖像顯示ImageView與畫廊組件Gallery
- 7.消息提示Toast
- 8.列表組件 ListView和ListActivity
- 9. 滑動(dòng)抽屜組件SlidingDraw
- 三.中級控件
- 1.傳遞參數(shù)組件Intent
- 1.Activity頁面切換
- 2.應(yīng)用Intent在Activity頁面之間傳遞數(shù)據(jù)
- 2. 菜單Menu
- 1.選項(xiàng)菜單(Option Menu)
- 2.上下文菜單(Context Menu)
- 3. 對話框
- 1.消息對話框AlertDialog
- 2.進(jìn)度條對話框ProgressDialog
- 3. 日期選擇對話框和時(shí)間選擇對話框
- 4.1 繪制幾何圖形
- 5. 后臺(tái)服務(wù)與系統(tǒng)服務(wù)調(diào)用
- 5.1后臺(tái)服務(wù)Service
- 5.2信息廣播機(jī)制Broadcast
- 5.3 系統(tǒng)服務(wù)
- 5.3.1 Android的系統(tǒng)服務(wù)
- 5.3.2 系統(tǒng)通知服務(wù)Notification
- 5.3.3 系統(tǒng)定時(shí)服務(wù)AlarmManager
- 6.1 Web視圖
- 6.1.1 瀏覽器引擎WebKit
- 6.1.2 Web視圖對象
- 6.1.3 調(diào)用JavaScript
- 6.2 基于TCP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)
- 四.案例
- 1.hello
- 2.密碼驗(yàn)證程序
- 3.Toast的四種方式
- 4.ImageSwitch(失敗的,有參考價(jià)值)
- 5.WebView(需要聯(lián)網(wǎng))
- 6.MainActivity(模板)
- 7.密碼驗(yàn)證程序
- 8.動(dòng)畫伸縮,旋轉(zhuǎn),擴(kuò)大
- 9.長按條目激活上下文菜單
- 10.菜單項(xiàng)
- 9.fargment
- 11.myViewpager
- 12.myViewpager2
- 13.長按條目激活上下文菜單
- 總結(jié)
前言
因?yàn)闊釔?#xff0c;所以學(xué)習(xí)
官網(wǎng)
學(xué)習(xí)路線
一、初識?
1.目錄
2.res
res目錄用于存放項(xiàng)目所需要的聲音、圖片、用戶界面等資源文件。
在XML文件中表示顏色的方法有多種:
#RGB:用三位十六進(jìn)制數(shù)分別表示紅、綠、藍(lán)顏色。
#ARGB:用四位十六進(jìn)制數(shù)分別表示透明度、紅、綠、藍(lán)顏色。
#RRGGBB:用六位十六進(jìn)制數(shù)分別表示紅、綠、藍(lán)顏色。
#AARRGGBB:用八位十六進(jìn)制數(shù)分別表示透明度、紅、綠、藍(lán)顏色。
如何去使用:
ava代碼中使用:
Java 文字:
txtName.setText(getResources().getText(R.string.name));
圖片:
imgIcon.setBackgroundDrawableResource(R.drawable.icon);
顏色:
txtName.setTextColor(getResouces().getColor(R.color.red));
布局:
setContentView(R.layout.main);
控件:
txtName = (TextView)findViewById(R.id.txt_name);
3.Android程序簽名打包
打包教程
4.反編譯獲取文件(失敗)
看看相關(guān)
二、控件
Android系統(tǒng)的大多數(shù)用戶界面組件均放置在widget包中。
1.文本標(biāo)簽TextView與按鈕Button
文本標(biāo)簽TextView用于顯示文本內(nèi)容,是最常用的組件之一
按鈕Button在程序設(shè)計(jì)中最常用的方式是實(shí)現(xiàn)OnClickListener監(jiān)聽接口,當(dāng)單擊按鈕時(shí),通過OnClickListener監(jiān)聽接口觸發(fā)onClick()事件,實(shí)現(xiàn)用戶需要的功能。
OnClickListener接口有一個(gè)onClick()方法,在按鈕Button實(shí)現(xiàn)OnClickListener接口時(shí),一定要重寫這個(gè)方法。
按鈕Button調(diào)用OnClickListener接口對象的方法如下:
按鈕對象. setOnClickListener(OnClickListener對象);
2.文本編輯框EditText
文本編輯框EditText
定義框EditText元素的android:numeric屬性,其取值只能是下列常量(可由“|”連接多個(gè)常量):
integer 可以輸入數(shù)值.
signed 可以輸入帶符號的數(shù)值.
decimal 可以輸入帶小數(shù)點(diǎn)的數(shù)值.
2.進(jìn)度條ProgressBar
進(jìn)度條ProgressBar能以形象地圖示方式直觀顯示某個(gè)過程的進(jìn)度。
package com.ex2_10; import android.app.Activity;。。。。 public class Ex03_10Activity extends Activity { ProgressBar progressBar; Button btn1,btn2;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);progressBar = (ProgressBar)findViewById(R.id.ProgressBar01);btn1=(Button)findViewById(R.id.button1);btn2=(Button)findViewById(R.id.button2);btn1.setOnClickListener(new click1());btn2.setOnClickListener(new click2()); } class click1 implements OnClickListener {public void onClick(View v) {progressBar.incrementProgressBy(5);}} class click2 implements OnClickListener {public void onClick(View v) {progressBar.incrementProgressBy(-5);}} }4.復(fù)選按鈕CheckBox
復(fù)選按鈕CheckBox用于多項(xiàng)選擇的情形,用戶可以一次性選擇多個(gè)選項(xiàng)。復(fù)選按鈕CheckBox是按鈕Button的子類,其屬性與方法繼承于按鈕Button。
5.單選組件RadioGroup與單選按鈕RadioButton
單選組件RadioGroup用于多項(xiàng)選擇中只允許任選其中一項(xiàng)的情形。單選組件RadioGroup由一組單選按鈕RadioButton組成。
6.圖像顯示ImageView與畫廊組件Gallery
ImageView類用于顯示圖片或圖標(biāo)等圖像資源,并提供圖像縮放及著色(渲染)等圖像處理功能。
scaleType屬性值
7.消息提示Toast
Toast類的常用方法
8.列表組件 ListView和ListActivity
ListView類是Android程序開發(fā)中經(jīng)常用到組件,該組件時(shí)必須與適配器配合使用,由適配器提供顯示樣式和顯示數(shù)據(jù)。
9. 滑動(dòng)抽屜組件SlidingDraw
ListView類是Android程序開發(fā)中經(jīng)常用到組件,該組件時(shí)必須與適配器配合使用,由適配器提供顯示樣式和顯示數(shù)據(jù)。
SlidingDraw類重要的XML屬性
SlidingDraw類的重要方法
三.中級控件
1.傳遞參數(shù)組件Intent
Intent是android系統(tǒng)一種運(yùn)行時(shí)的綁定機(jī)制,在應(yīng)用程序運(yùn)行時(shí)連接兩個(gè)不同組件。在android 的應(yīng)用程序中不管是頁面切換,還是傳遞數(shù)據(jù),或是調(diào)用外部程序,都可能要用到Intent。Intent負(fù)責(zé)對應(yīng)用中某次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。
1.Activity頁面切換
Activity跳轉(zhuǎn)與傳遞參數(shù)值主要通過Intent類協(xié)助實(shí)現(xiàn)。在一個(gè)Activity頁面中啟動(dòng)另一個(gè)Activity頁面的運(yùn)行,是最簡單的Activity頁面切換方式。其步驟如下:
(1)首先創(chuàng)建一個(gè)Intent對象,其構(gòu)造方法為:
Intent intent = new Intent(當(dāng)前Activity.this, 另一Activity.class);
(2)然后調(diào)用Activity的startActivity(intent)方法,切換到另一個(gè)Activity頁面。
2.應(yīng)用Intent在Activity頁面之間傳遞數(shù)據(jù)
1、Bundle類
Bundle類是一個(gè)用于將字符串與某組件對象建立映射關(guān)系的組件。Bundle組件與Intent配合使用,可在不同的Activity之間傳遞數(shù)據(jù)。Bundle類的常用方法如下:
putString(String key, String value): 把字符串用“鍵-值”形式存放到Bundle對象中;
remove(String key):移除指定key的值;
getString(String key):獲取指定key的字符。
(1)在頁面Activity A端
創(chuàng)建Intent對象和Bundle對象
Intent intent = new Intent();
Bundle bundle = new Bundle();
為Intent指定切換頁面,用Bundle 存放"鍵-值"對數(shù)據(jù)
intent.setClass(MainActivity.this, secondActivity.class);
bundle.putString(“text”, txt.getText().toString());
將Bundle對象傳遞給Intent
intent.putExtras(bundle);
(2)在另一頁面Activity B端
從Intent中獲取Bundle對象
bunde = this.getIntent().getExtras();
從Bundle對象中按"鍵-值"對的鍵名獲取對應(yīng)數(shù)據(jù)值
String str = bunde.getString(“text”);
2. 菜單Menu
一個(gè)菜單(Menu)由多個(gè)菜單選項(xiàng)組成,選擇一個(gè)菜單項(xiàng)就可以引發(fā)一個(gè)動(dòng)作事件。
在Android系統(tǒng)中,菜單可以分為三類:選項(xiàng)菜單(Option Menu),上下文菜單(Context Menu)以及子菜單(Sub Menu)。
1.選項(xiàng)菜單(Option Menu)
選項(xiàng)菜單需要通過按下設(shè)備的Menu鍵來顯示。當(dāng)按下設(shè)備上的Menu鍵后,在屏幕底部彈出一個(gè)菜單,這個(gè)菜單稱作選項(xiàng)菜單(OptionsMenu)。
Activity實(shí)現(xiàn)選項(xiàng)菜單的回調(diào)方法
2.菜單Menu
設(shè)計(jì)選項(xiàng)菜單需要用到Menu、MenuItem接口。一個(gè)Menu對象代表一個(gè)菜單,Menu對象中可以添加菜單項(xiàng)MenuItem對象,也可以添加子菜單SubMenu。
菜單Menu使用add(int groupId, int itemId, int order, CharSequence title) 方法添加一個(gè)菜單項(xiàng)。
add()方法中的四個(gè)參數(shù),依次是:
(1)組別;
(2)Id,這個(gè)很重要,Android根據(jù)這個(gè)Id來確定不同的菜單;
(3)順序,哪個(gè)菜單項(xiàng)在前面由這個(gè)參數(shù)的大小決定;
(4)文本,菜單項(xiàng)的顯示文本。
3.創(chuàng)建選項(xiàng)菜單的步驟
創(chuàng)建選項(xiàng)菜單的步驟如下:
(1)重寫Activity的onCreateOptionMenu(Menu menu)方法,當(dāng)菜單第一次被打開時(shí)調(diào)用;
(2)調(diào)用Menu的add( )方法添加菜單項(xiàng)(MenuItem);
(3),重寫Activity的onOptionsItemSelected(MenuItem item)方法,當(dāng)菜單項(xiàng)(MenuItem)被選擇時(shí)來響應(yīng)事件。
2.上下文菜單(Context Menu)
Android系統(tǒng) 的上下文菜單類似于 PC 上的右鍵菜單。當(dāng)為一個(gè)視圖注冊了上下文菜單之后,長按(2 秒左右)這個(gè)視圖對象就會(huì)彈出一個(gè)浮動(dòng)菜單,即上下文菜單。
創(chuàng)建一個(gè)上下文菜單的步驟如下:
3. 對話框
對話框是一個(gè)有邊框、有標(biāo)題欄的獨(dú)立存在的容器,在應(yīng)用程序中經(jīng)常使用對話框組件來進(jìn)行人機(jī)交互。Android系統(tǒng)提供了四種常用對話框:
AlertDialog:消息對話框;
ProgressDialog:進(jìn)度條對話框;
DatePickerDialog:日期選擇對話框;
TimePickerDialog:時(shí)間選擇對話框。
1.消息對話框AlertDialog
設(shè)計(jì)AlertDialog對話框的步驟如下:
(1)用AlertDialog.Builder類創(chuàng)建對話框Builder對象
Builder dialog=new AlertDialog.Builder(Context);
(2)設(shè)置對話框的標(biāo)題、圖標(biāo)、提示信息內(nèi)容、按鈕等
dialog.setTitle(“普通對話框”);
dialog.setIcon(R.drawable.icon1);
dialog.setMessage(“一個(gè)簡單的提示對話框”) ;
dialog.setPositiveButton(“確定”, new okClick()) ;
3)創(chuàng)建并顯示AlertDialog對話框?qū)ο?br /> dialog.create();
dialog.show();
如果在對話框內(nèi)部設(shè)置了按鈕,還需要對其設(shè)置事件監(jiān)聽OnClickListener。
2.進(jìn)度條對話框ProgressDialog
3. 日期選擇對話框和時(shí)間選擇對話框
4.1 繪制幾何圖形
1、畫布Canvas
2、畫筆Paint
畫筆Paint用來描述所繪制圖形的顏色、和風(fēng)格,如線條寬度、顏色等信息。
3、點(diǎn)到點(diǎn)的連線路徑Path
當(dāng)繪制由一些線段組成的圖形(如:三角形、四邊形等),需要用Path類來描述線段路徑。
5. 后臺(tái)服務(wù)與系統(tǒng)服務(wù)調(diào)用
5.1后臺(tái)服務(wù)Service
Android系統(tǒng)的Service是一種類似于Activity的組件,但Service沒有用戶操作界面,也不能自己啟動(dòng),其主要作用是提供后臺(tái)服務(wù)調(diào)用。Service不像Activity那樣,當(dāng)用戶關(guān)閉應(yīng)用界面就停止運(yùn)行,Service會(huì)一直在后臺(tái)運(yùn)行,除非另有明確命令其停止。
通常使用Service為應(yīng)用程序提供一些只需在后臺(tái)運(yùn)行的服務(wù),或不需要界面的功能,例如,從Internet下載文件、控制Video播放器等。
Service的生命周期中只有三個(gè)階段:onCreate, onStartCommand, onDestroy。
通常Service要在一個(gè)Activity中啟動(dòng),調(diào)用Activity的startService(Intent)方法啟動(dòng)Service。
若要停止正在運(yùn)行的Service,則調(diào)用Activity的stopService(Intent)方法關(guān)閉Service。
方法startService()和stopService()均繼承于Activity及Service共同的父類android.content.Context。
一個(gè)服務(wù)只能創(chuàng)建一次,銷毀一次,但可以開始多次,即onCreate()和onDestroy()方法只會(huì)被調(diào)用一次,而onStartCommand()方法可以被調(diào)用多次。后臺(tái)服務(wù)的具體操作一般應(yīng)該放在onStartCommand()方法里面。如果Service已經(jīng)啟動(dòng),當(dāng)再次啟動(dòng)Service時(shí)則不調(diào)用onCreate()而直接調(diào)用onStartCommand()。
設(shè)計(jì)一個(gè)后臺(tái)服務(wù)的應(yīng)用程序步驟:
(1)創(chuàng)建Service的子類:
編寫onCreate()方法,創(chuàng)建后臺(tái)服務(wù);
編寫onStartCommand()方法,啟動(dòng)后臺(tái)服務(wù);
編寫onDestroy()方法,終止后臺(tái)服務(wù),并刪除所有調(diào)用。
(2)創(chuàng)建啟動(dòng)和控制Service的Activity:
創(chuàng)建Intent對象,建立Activity與Service的關(guān)聯(lián);
調(diào)用Activity的startService(Intent)方法啟動(dòng)Service后臺(tái)服務(wù);
調(diào)用Activity的stopService(Intent)方法關(guān)閉Service后臺(tái)服務(wù)。
(3)修改配置文件AndroidManifest.xml:
在配置文件AndroidManifest.xml的標(biāo)簽中添加如下代碼:
5.2信息廣播機(jī)制Broadcast
Broadcast是Android系統(tǒng)應(yīng)用程序之間傳遞信息的一種機(jī)制。當(dāng)系統(tǒng)之間需要傳遞某些信息時(shí),不是通過諸如單擊按鈕之類組件來觸發(fā)事件,而是由系統(tǒng)自身通過系統(tǒng)調(diào)用來引發(fā)事件。這種系統(tǒng)調(diào)用是由BroadcastReceiver類的實(shí)現(xiàn)的,把這種系統(tǒng)調(diào)用稱為廣播。
BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統(tǒng)和應(yīng)用中的廣播信息。
實(shí)現(xiàn)廣播和接收機(jī)制的步驟:
(1)創(chuàng)建Intent對象,設(shè)置Intent對象的action屬性。這個(gè)action屬性是接收廣播數(shù)據(jù)的標(biāo)識。注冊了相同action屬性的廣播接收器才能收到發(fā)送的廣播數(shù)據(jù)。
Intent intent = new Intent();
intent.setAction(“abc”);
(2)編寫需要廣播的信息內(nèi)容,將需要播發(fā)的信息封裝到Intent中,通過Activity或Service繼承其父類Context的sendBroadcast()方法將Intent廣播出去。intent.putExtra(“hello”, “這是廣播信息!”);
sendBroadcast(intent);
(3)編寫一個(gè)繼承BroadcastReceiver的子類作為廣播接收器,該對象是接收廣播信息并對信息進(jìn)行處理的組件。在子類中要重寫接收廣播信息的onReceive()方法。
class TestReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
/* 接收廣播信息并對信息作出響應(yīng)的代碼 */
}
}
(4)在配置文件AndroidManifest.xml中注冊廣播接收類。
(5)銷毀廣播接收器。
Android系統(tǒng)在執(zhí)行onReceive()方法時(shí),會(huì)啟動(dòng)一個(gè)程序計(jì)時(shí)器,在一定時(shí)間內(nèi),廣播接收器的實(shí)例會(huì)被銷毀。因此,廣播機(jī)制不適合傳遞大數(shù)據(jù)量的信息。
為了識別Intent對象的action,有時(shí)在IntentFilter對象中設(shè)置Intent對象的action,而注冊廣播接收器的工作由registerReceiver()方法完成。
registerReceiver(mBroadcast, filter)方法有兩個(gè)參數(shù),其中參數(shù)mBroadcast是廣播接收器BroadcastReceiver對象,filter是IntentFilter對象。
5.3 系統(tǒng)服務(wù)
5.3.1 Android的系統(tǒng)服務(wù)
5.3.2 系統(tǒng)通知服務(wù)Notification
Notification是Android系統(tǒng)的一種通知服務(wù),當(dāng)手機(jī)來電、來短信、鬧鐘鈴聲時(shí),在狀態(tài)欄顯示通知的圖標(biāo)和文字,提示用戶處理。當(dāng)拖動(dòng)狀態(tài)欄時(shí),可以查看這些信息。
Notification提供了聲音、振動(dòng)等屬性
系統(tǒng)通知服務(wù)Notification由系統(tǒng)通知管理對象NotificationManager進(jìn)行管理及發(fā)布通知。由getSystemService(NOTIFICATION_SERVICE)創(chuàng)建NotificationManager對象,
NotificationManager n_Manager =
NotificationManager)getSystemService(NOTIFICATION_SERVICE);
NotificationManager對象通過notify(int id, Notification notification) 方法把通知發(fā)送到狀態(tài)欄。通過cancelAll() 方法取消以前顯示的所有通知。
5.3.3 系統(tǒng)定時(shí)服務(wù)AlarmManager
6.1 Web視圖
6.1.1 瀏覽器引擎WebKit
WebKit是一個(gè)開源的瀏覽器引擎。Webkit內(nèi)核具有非常好的網(wǎng)頁解析機(jī)制,很多應(yīng)用系統(tǒng)都使用WebKit作瀏覽器的內(nèi)核。
Android對 Webkit作了進(jìn)一步的封裝,并提供了豐富的API。Android平臺(tái)的WebKit模塊由Java層和WebKit庫兩個(gè)部分組成,Java層負(fù)責(zé)與Android應(yīng)用程序進(jìn)行通信,而WebKit類庫負(fù)責(zé)實(shí)際的網(wǎng)頁排版處理。
WebKit包中的幾個(gè)重要類
6.1.2 Web視圖對象
1、WebView類
WebView類是WebKit模塊Java層的視圖類,所有需要使用Web瀏覽功能的Android應(yīng)用程序都要?jiǎng)?chuàng)建該視圖對象,用于顯示和處理請求的網(wǎng)絡(luò)資源。
WebKit模塊支持HTTP、HTTPS、FTP以及javascript請求。WebView作為應(yīng)用程序的UI接口,為用戶提供了一系列的網(wǎng)頁瀏覽、用戶交互接口,客戶程序通過這些接口訪問WebKit核心代碼。
WebView類的常用方法
2、使用WebView的說明
1)設(shè)置WebView基本信息:
如果訪問的頁面中有Javascript,則webview必須設(shè)置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
觸摸焦點(diǎn)起作用
requestFocus();
取消滾動(dòng)條
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
(2)設(shè)置WevView要顯示的網(wǎng)頁:
互聯(lián)網(wǎng)用:webView.loadUrl(“http://www.google.com”);
本地文件用:webView.loadUrl(“file:///android_asset/XX.html”); 本地文件要存放在項(xiàng)目的assets目錄中
3)用webview點(diǎn)擊鏈接看了很多頁面以后,如果不做任何處理,點(diǎn)擊系統(tǒng)“Back”鍵,瀏覽器會(huì)調(diào)用finish()而結(jié)束自身的運(yùn)行;如果希望瀏覽的網(wǎng)頁回退而不是退出瀏覽器,需要在當(dāng)前Activity中覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法處理該Back事件。
6.1.3 調(diào)用JavaScript
(1) WebSteeings類
(2)WebViewClient類
WebViewClient 類用于對WebView對象中各種事件的處理,通過重寫這些提供的事件方法,可以對WebView對象在頁面載入、資源載入、頁面訪問錯(cuò)誤等情況發(fā)生時(shí)進(jìn)行各種操作。
(3)WebChromeClient類
WebChromeClient是輔助WebView處理JavaScript對話框、網(wǎng)站的標(biāo)題、網(wǎng)站的圖標(biāo)、加載進(jìn)度條等操作的類。
6.2 基于TCP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)
對話框是一個(gè)有邊框、有標(biāo)題欄的獨(dú)立存在的容器,在應(yīng)用程序中經(jīng)常使用對話框組件來進(jìn)行人機(jī)交互。Android系統(tǒng)提供了四種常用對話框:
AlertDialog:消息對話框;
ProgressDialog:進(jìn)度條對話框;
DatePickerDialog:日期選擇對話框;
TimePickerDialog:時(shí)間選擇對話框。
四.案例
1.hello
代碼如下(示例):
xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /></LinearLayout>)Java文件
package com.example.phone;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);} }2.密碼驗(yàn)證程序
Java文件
class mClick implements OnClickListener {public void onClick(View v){String passwd;passwd=edit.getText().toString(); if(passwd.equals("abc123")) txt2.setText("歡迎進(jìn)入快樂大本營!"); elsetxt2.setText("非法用戶,請立刻離開!"); }}}3.Toast的四種方式
Java文件
package com.example.phones; //?大大大的問題。 //四種哦!!! import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; import android.widget.Toast;public class ToastActivity extends AppCompatActivity {private Button btn1,btn2,btn3,btn4;private LinearLayout toastView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_toast);btn1=findViewById(R.id.btn_1);btn2=findViewById(R.id.btn_2);btn3=findViewById(R.id.btn_3);btn4=findViewById(R.id.btn_4);Myclick click=new Myclick();btn1.setOnClickListener(click);btn2.setOnClickListener(click);btn3.setOnClickListener(click);btn4.setOnClickListener(click);}private class Myclick implements View.OnClickListener{@Overridepublic void onClick(View v) {//switch這個(gè)要記好!!getApplicationContext(),是content的!!switch(v.getId()){case R.id.btn_1:Toast.makeText(ToastActivity.this, "普通的Toast!!", Toast.LENGTH_SHORT).show();break;case R.id.btn_2:Toast toast=Toast.makeText(getApplicationContext(),"中間的toast!!",Toast.LENGTH_LONG);// toast.setText("中間的toast!!"); // toast.setDuration(Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER,0,0);toast.show();break;case R.id.btn_3://toast的makeText方法!!!Toast toast1=Toast.makeText(ToastActivity.this,"自定義的toast!!",Toast.LENGTH_LONG);toast1.setGravity(Gravity.CENTER,0,80);toastView= (LinearLayout) toast1.getView();// 獲取一個(gè)頁面 // View view= LayoutInflater.from(ToastActivity.this).inflate(R.layout.zidingyitoast,null);ImageView imageView=new ImageView(ToastActivity.this); // TextView textView=findViewById(R.id.tv_1);imageView.setImageResource(R.drawable.ic_launcher_foreground); // textView.setText("java的toast");toastView.addView(imageView,0);toast1.show();break;case R.id.btn_4://自己寫一個(gè)toast,可以復(fù)用!!Utiltoast.showmsg(getApplicationContext(),"奇跡哦");break;}}} } //Utiltoast,自寫的toast package com.example.phones;import android.content.Context; import android.view.Gravity; import android.widget.Toast;public class Utiltoast {public static Toast mtoast;public static void showmsg(Context context,String msg){if (mtoast==null){mtoast=Toast.makeText(context,msg,Toast.LENGTH_LONG);mtoast.setGravity(Gravity.CENTER,0,0);}else {mtoast.setText(msg);}mtoast.show();} }4.ImageSwitch(失敗的,有參考價(jià)值)
Java文件
package com.example.phones;import androidx.appcompat.app.AppCompatActivity;import android.database.DataSetObserver; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.Button; import android.widget.Gallery; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.SpinnerAdapter; import android.widget.ViewSwitcher;public class Imageswith extends AppCompatActivity {ImageView imageView;Button button_last,button_next;Gallery gallery;ImageSwitcher imageSwitcher;private int[] Imgs={R.drawable.ic_launcher_background,R.drawable.ic_launcher_foreground,R.mipmap.haokan,R.mipmap.haokan2,R.mipmap.haokan3,};int index=1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_imageswith);imageView=findViewById(R.id.image);button_last = findViewById(R.id.btn_last);button_next = findViewById(R.id.btn_next);gallery = findViewById(R.id.gallery1);imageSwitcher = findViewById(R.id.imageswitcher);button_next.setOnClickListener( new click());button_last.setOnClickListener( new click());imageSwitcher.setFactory(new viewFactory());imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));imageSwitcher.setImageResource(R.mipmap.haokan);gallery.setOnItemSelectedListener( new OnitemSelectedListener());gallery.setSpacing(10);gallery.setAdapter(new baseAdapter());}private class click implements View.OnClickListener {@Overridepublic void onClick(View v) {if (v == button_last) {if (index > 0 && index < Imgs.length) {index--;imageView.setImageResource(Imgs[index]);}}if (v == button_next) {if (index >=0 && index < Imgs.length-1) {index++;imageView.setImageResource(Imgs[index]);}}}}private class viewFactory implements ViewSwitcher.ViewFactory {@Overridepublic View makeView() {ImageView imageView;imageView = new ImageView(Imageswith.this);imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);return imageView;}}private class OnitemSelectedListener implements AdapterView.OnItemSelectedListener {@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {imageSwitcher.setImageResource((int) gallery.getItemAtPosition(position));}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}}private class baseAdapter implements SpinnerAdapter {@Overridepublic void registerDataSetObserver(DataSetObserver observer) {}@Overridepublic void unregisterDataSetObserver(DataSetObserver observer) {}@Overridepublic int getCount() {return Imgs.length;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return Imgs[position];}@Overridepublic boolean hasStableIds() {return false;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView;imageView = new ImageView(Imageswith.this);imageView.setImageResource(Imgs[position]);imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);imageView.setLayoutParams(new Gallery.LayoutParams(60,60));return imageView;}@Overridepublic int getItemViewType(int position) {return 0;}@Overridepublic int getViewTypeCount() {return 0;}@Overridepublic boolean isEmpty() {return false;}@Overridepublic View getDropDownView(int position, View convertView, ViewGroup parent) {return null;}} }XML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".Imageswith"><LinearLayoutandroid:gravity="center"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:id="@+id/image"android:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/ic_launcher_background"app:srcCompat="@mipmap/haokan" /></LinearLayout><LinearLayoutandroid:gravity="center"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="wrap_content"><Galleryandroid:id="@+id/gallery1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:spacing="10dp"/><ImageSwitcherandroid:id="@+id/imageswitcher"android:layout_width="wrap_content"android:layout_height="240dp"/></LinearLayout><LinearLayoutandroid:gravity="center"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_last"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="30dp"android:text="上一頁"/><Buttonandroid:id="@+id/btn_next"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下一頁" /></LinearLayout> </LinearLayout>5.WebView(需要聯(lián)網(wǎng))
Java文件
package com.example.phones; //Webview的訪問 import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity;import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient;public class WebViewActivity extends AppCompatActivity {private WebView wv;@RequiresApi(api = Build.VERSION_CODES.O)@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_web_view);wv=findViewById(R.id.mv);wv.getSettings().setJavaScriptEnabled(true);wv.loadUrl("https://passport2.chaoxing.com"); // wv.addJavascriptInterface();//1.第一種加載方式assets文件下的html//wv.loadUrl("file:///android_asset/text.html");//2.第二種加載方式網(wǎng)頁,訪問網(wǎng)絡(luò)資源//wv.loadDataWithBaseURL();//wv.getSettings().setJavaScriptEnabled(true);//直接在頁面加載,可以很爽。//wv.setWebViewClient(new myWebView());//wv.setWebChromeClient(new myChrome());//wv.loadUrl("https://www.runoob.com");//wv.loadDataWithBaseURL();}class myWebView extends WebViewClient{//在本頁面加載頁面!!@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {view.loadUrl(request.getUrl().toString());return true;}//顯示在logcat@RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);Log.d("WebView","onPageStarted...");wv.evaluateJavascript("javascript:alert('確定?')",null);}@RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);Log.d("WebView","onPageFinished....");//wv.loadUrl("javascript:alert('確定?')");}}//可以返回上一個(gè)頁面@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_BACK&&wv.canGoBack()){wv.goBack();return true;}return super.onKeyDown(keyCode, event);}private class myChrome extends WebChromeClient {//進(jìn)度條????@Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);}//標(biāo)題隨之改變@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);setTitle(title);}} }XML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><WebViewandroid:id="@+id/mv"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>6.MainActivity(模板)
Java文件
package com.example.phones;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14, btn15, btn16, btn17;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle("RadioGroup_Activity");btn1 = findViewById(R.id.button1);btn2 = findViewById(R.id.button2);btn3 = findViewById(R.id.button3);btn4 = findViewById(R.id.button4);btn5 = findViewById(R.id.button5);btn6 = findViewById(R.id.button6);btn7 = findViewById(R.id.button7);btn8 = findViewById(R.id.button8);btn9 = findViewById(R.id.button9);btn10 = findViewById(R.id.button10);btn11 = findViewById(R.id.button11);btn12 = findViewById(R.id.button12);btn13 = findViewById(R.id.button13);btn14 = findViewById(R.id.button14);btn15 = findViewById(R.id.button15);btn16 = findViewById(R.id.button16);btn17 = findViewById(R.id.button17);btn1.setOnClickListener(this);btn2.setOnClickListener(this);btn3.setOnClickListener(this);btn4.setOnClickListener(this);btn5.setOnClickListener(this);//setclik(); // btn.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // // } // });}@Overridepublic void onClick(View v) {Intent intent = null;switch (v.getId()) {case R.id.button1:intent = new Intent(MainActivity.this, AlphaActivity.class);Toast.makeText(MainActivity.this, "歡迎圖形", Toast.LENGTH_SHORT).show();break;case R.id.button2:intent = new Intent(MainActivity.this, WebViewActivity.class);Toast.makeText(MainActivity.this, "歡迎webView", Toast.LENGTH_SHORT).show();break;case R.id.button3:intent = new Intent(MainActivity.this, ToastActivity.class);Toast.makeText(MainActivity.this, "歡迎toast", Toast.LENGTH_SHORT).show();break; // case R.id.button4: // intent=new Intent(MainActivity.this, FragmentActivity.class); // Toast.makeText(MainActivity.this, "歡迎Fragment", Toast.LENGTH_SHORT).show(); break;case R.id.button5:intent = new Intent(MainActivity.this, Imageswith.class);Toast.makeText(MainActivity.this, "歡迎Imageswith", Toast.LENGTH_SHORT).show();break;}startActivity(intent);}// private void setclik() { // myclick clicl=new myclick(); // btn1.setOnClickListener(clicl); // btn2.setOnClickListener(clicl); // btn3.setOnClickListener(clicl); // btn4.setOnClickListener(clicl); // } // // public class myclick implements View.OnClickListener{ // Intent intent=null; // @Override // public void onClick(View v) { // switch (v.getId()){ // case R.id.button1: // intent=new Intent(MainActivity.this,AlphaActivity.class); // Toast.makeText(MainActivity.this, "歡迎圖形", Toast.LENGTH_SHORT).show(); // break; // case R.id.button2: // intent=new Intent(MainActivity.this,WebViewActivity.class); // Toast.makeText(MainActivity.this, "歡迎webView", Toast.LENGTH_SHORT).show(); // break; // case R.id.button3: // intent=new Intent(MainActivity.this,ToastActivity.class); // Toast.makeText(MainActivity.this, "歡迎toast", Toast.LENGTH_SHORT).show(); // break; // case R.id.button4: // intent=new Intent(MainActivity.this, FragmentActivity.class); // Toast.makeText(MainActivity.this, "歡迎Fragment", Toast.LENGTH_SHORT).show(); // break; // } // startActivity(intent); // } // } }XML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="37dp"android:text="屬性動(dòng)畫演示" /><Buttonandroid:id="@+id/button2"android:layout_width="match_parent"android:layout_height="38dp"android:text="webView" /><Buttonandroid:id="@+id/button3"android:layout_width="match_parent"android:layout_height="36dp"android:text="Toast" /><Buttonandroid:id="@+id/button4"android:layout_width="match_parent"android:layout_height="34dp"android:text="Fragment" /><Buttonandroid:id="@+id/button5"android:layout_width="match_parent"android:layout_height="38dp"android:text="Imageswith" /><Buttonandroid:id="@+id/button6"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button7"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button8"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button9"android:layout_width="match_parent"android:layout_height="35dp"android:text="Button" /><Buttonandroid:id="@+id/button10"android:layout_width="match_parent"android:layout_height="36dp"android:text="Button" /><Buttonandroid:id="@+id/button11"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button12"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button13"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button14"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button15"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button16"android:layout_width="match_parent"android:layout_height="43dp"android:text="Button" /><Buttonandroid:id="@+id/button17"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /><Buttonandroid:id="@+id/button18"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button" /> </LinearLayout>7.密碼驗(yàn)證程序
Java文件
class mClick implements OnClickListener {public void onClick(View v){String passwd;passwd=edit.getText().toString(); if(passwd.equals("abc123")) txt2.setText("歡迎進(jìn)入快樂大本營!"); elsetxt2.setText("非法用戶,請立刻離開!"); }}}8.動(dòng)畫伸縮,旋轉(zhuǎn),擴(kuò)大
Java文件
package com.example.phones;import androidx.appcompat.app.AppCompatActivity;import android.animation.ObjectAnimator; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView;public class AlphaActivity extends AppCompatActivity {Button rotateButton,alphaButton,scaleButton;ImageView img;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_alpha);img = (ImageView)findViewById(R.id.imageView);rotateButton = (Button)findViewById(R.id.button1);alphaButton = (Button)findViewById(R.id.button2);scaleButton = (Button)findViewById(R.id.button3);rotateButton.setOnClickListener(new mClick());alphaButton.setOnClickListener(new mClick());scaleButton.setOnClickListener(new mClick());}public class mClick implements View.OnClickListener{@Overridepublic void onClick(View v) {if(v == rotateButton) {ObjectAnimator animator = ObjectAnimator.ofFloat(img, "rotation", 0.0F, 360.0F);animator.setDuration(1000);animator.start();}else if(v == alphaButton){ObjectAnimator animator = ObjectAnimator.ofFloat(img, "alpha",1.0F, 0.0F, 1.0F);animator.setDuration(3000);animator.start();}else if(v == scaleButton){ObjectAnimator animator = ObjectAnimator.ofFloat(img, "ScaleY", 1.0F, 0.5F, 1.0F);animator.setDuration(5000);animator.start();}}} }XML文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="屬性動(dòng)畫演示"android:id="@+id/textView"android:textSize="28sp"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_gravity="center_horizontal" /><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_gravity="center_horizontal"android:layout_alignParentRight="true"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="旋轉(zhuǎn)"android:id="@+id/button1"android:layout_gravity="bottom"android:textSize="18sp"android:layout_below="@+id/textView"android:layout_alignParentStart="true"android:layout_alignParentLeft="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="淡入淡出"android:id="@+id/button2"android:layout_gravity="bottom"android:textSize="18sp"android:layout_below="@+id/button1"android:layout_alignParentLeft="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="縮放"android:id="@+id/button3"android:layout_gravity="bottom"android:textSize="18sp"android:layout_below="@+id/button2"android:layout_alignParentLeft="true" /></LinearLayout><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/imageView"android:layout_centerVertical="true"android:layout_centerHorizontal="true"android:scaleType="centerCrop"android:layout_gravity="center_horizontal"android:src="@drawable/ic_launcher_foreground" /></LinearLayout></RelativeLayout>9.長按條目激活上下文菜單
Java文件
package com.example.myapplication2;import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {TextView txt1, txt2, txt3;private static final int item1 = Menu.FIRST;private static final int item2 = Menu.FIRST+1;private static final int item3 = Menu.FIRST+2;String str[] = {" 令狐沖", "楊 過", "蕭 峰 " };@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);txt1=(TextView)findViewById(R.id.textView1);txt2=(TextView)findViewById(R.id.textView2);txt3=(TextView)findViewById(R.id.textView3);txt1.setText(str[0].toString());txt2.setText(str[1].toString());txt3.setText(str[2].toString());registerForContextMenu(txt1);registerForContextMenu(txt2);registerForContextMenu(txt3);}//上下文菜單,本例會(huì)通過長按條目激活上下文菜單@Overridepublic void onCreateContextMenu(ContextMenu menu, View view,ContextMenuInfo menuInfo) {menu.setHeaderTitle("人物簡介");//添加菜單項(xiàng)menu.add(0, item1, 0, "武功");menu.add(0, item2, 0, "戰(zhàn)斗力");menu.add(0, item3, 0, "經(jīng)典語錄");}//菜單單擊響應(yīng)@Overridepublic boolean onContextItemSelected(MenuItem item){//獲取當(dāng)前被選擇的菜單項(xiàng)的信息switch(item.getItemId()){case item1://在這里添加處理代碼break;case item2://在這里添加處理代碼break;case item3://在這里添加處理代碼break;}return true;} } <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30dp"android:text="Hello World!"android:layout_margin="5dp"/><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30dp"android:text="我愛"android:layout_margin="5dp"/><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30dp"android:text="Android"android:layout_margin="5dp"/></LinearLayout>10.菜單項(xiàng)
Java文件
package com.example.myapplication;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {TextView txt;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);txt = (TextView)findViewById(R.id.TextView1);}@Overridepublic boolean onCreateOptionsMenu(Menu menu){// 調(diào)用父類方法來加入系統(tǒng)菜單super.onCreateOptionsMenu(menu);// 添加菜單項(xiàng)menu.add(1, //組號1, //唯一的ID號1, //排序號"菜單項(xiàng)1"); //標(biāo)題menu.add( 1, 2, 2, "菜單項(xiàng)2");menu.add( 1, 3, 3, "菜單項(xiàng)3");menu.add( 1, 4, 4, "菜單項(xiàng)4");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item){String title = "選擇了" + item.getTitle().toString();switch (item.getItemId()){ //響應(yīng)每個(gè)菜單項(xiàng)(通過菜單項(xiàng)的ID)case 1:txt.setText(title);break;case 2:txt.setText(title);break;case 3:txt.setText(title);break;case 4:txt.setText(title);break;default://對沒有處理的事件,交給父類來處理return super.onOptionsItemSelected(item);}return true;} }XML文件
class mClick implements OnClickListener {public void onClick(View v){String passwd;passwd=edit.getText().toString(); if(passwd.equals("abc123")) txt2.setText("歡迎進(jìn)入快樂大本營!"); elsetxt2.setText("非法用戶,請立刻離開!"); }}}9.fargment
MainActivity文件
package com.example.myfragment;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);} }BlankFragment文件
package com.example.myfragment;import android.content.Context; import android.net.Uri; import android.os.Bundle;import androidx.fragment.app.Fragment;import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView;public class BlankFragment extends Fragment {private TextView tv1;private Button btn;private View view;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentif (view==null){view = inflater.inflate(R.layout.fragment_blank, container, false);}tv1=view.findViewById(R.id.tv_2);btn=view.findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {tv1.setText("I am fine");}});return view;}}BlankFragment1文件
package com.example.myfragment;import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView;import androidx.fragment.app.Fragment;public class BlankFragment1 extends Fragment {private TextView tv1;private Button btn;private View view;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentif (view==null){view = inflater.inflate(R.layout.fragment_blank, container, false);}tv1=view.findViewById(R.id.tv_2);btn=view.findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {tv1.setText("I am fine");}});return view;}}activity_mainXML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><fragment android:name="com.example.myfragment.BlankFragment"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:id="@+id/fg_1"/><fragment android:name="com.example.myfragment.BlankFragment1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:id="@+id/fg_2"/> </LinearLayout>fragment_blankXML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!-- TODO: Update blank fragment layout --><Buttonandroid:id="@+id/btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="交流吧!!"/><TextViewandroid:id="@+id/tv_2"android:layout_marginBottom="30dp"android:layout_width="match_parent"android:layout_height="40dp"android:text="How are you?"android:textSize="30dp"/></LinearLayout>11.myViewpager
Java文件
package com.example.myviewpager;import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.ViewPager;import android.os.Bundle; import android.text.Layout; import android.view.LayoutInflater; import android.view.View;import java.util.ArrayList; import java.util.List;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);LayoutInflater If=getLayoutInflater().from(this);View view1=If.inflate(R.layout.layout,null);View view2=If.inflate(R.layout.layout1,null);View view3=If.inflate(R.layout.layout2,null);List<View> listview=new ArrayList<>();listview.add(view1);listview.add(view2);listview.add(view3);ViewPager viewPager=findViewById(R.id.vp);viewPager.setAdapter(new MyAdapter(listview));} }Java文件
package com.example.myviewpager;import android.view.View; import android.view.ViewGroup;import androidx.annotation.NonNull; import androidx.viewpager.widget.PagerAdapter;import java.util.List;public class MyAdapter extends PagerAdapter {private List<View> mlistview;public MyAdapter(List<View> listview){this.mlistview=listview;}@Overridepublic int getCount() {return mlistview.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view==object;}@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {container.addView(mlistview.get(position),0);return mlistview.get(position);}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView(mlistview.get(position));} }XML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.viewpager.widget.ViewPagerandroid:id="@+id/vp"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>XML文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:background="@color/colorAccent"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_1"android:layout_width="match_parent"android:layout_height="100dp"android:text="畫面1"android:gravity="center"android:textSize="50dp"/></LinearLayout>12.myViewpager2
Java文件
package com.example.myviewpagerand;import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import androidx.viewpager2.widget.ViewPager2;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ViewPager2 vip=findViewById(R.id.vp);VpagerAdapter myadapter=new VpagerAdapter();vip.setAdapter(myadapter);} }Java文件
package com.example.myviewpagerand;import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView;import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView;import java.util.ArrayList; import java.util.List;class VpagerAdapter extends RecyclerView.Adapter<VpagerAdapter.VpHolder>{private List<String> title=new ArrayList<>();public VpagerAdapter(){title.add("失所");title.add("神說");title.add("看破");title.add("失火");title.add("折磨");title.add("自我");title.add("無果");title.add("得過");title.add("執(zhí)著");}@NonNull@Overridepublic VpHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {return new VpHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.iteam,parent,false));}@Overridepublic void onBindViewHolder(@NonNull VpHolder holder, int position) {holder.tv.setText(title.get(position));}@Overridepublic int getItemCount() {return 3;}class VpHolder extends RecyclerView.ViewHolder {TextView tv;LinearLayout llay;public VpHolder(@NonNull View itemView) {super(itemView);llay=itemView.findViewById(R.id.container);tv=itemView.findViewById(R.id.tv_1);}} }XML文件()
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.viewpager2.widget.ViewPager2android:id="@+id/vp"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorPrimaryDark"></androidx.viewpager2.widget.ViewPager2> </LinearLayout>XML文件()
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:id="@+id/container"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_1"android:layout_width="match_parent"android:layout_height="match_parent"android:textColor="#961515"android:gravity="center"android:text="唯我中華!!"android:textSize="50dp"/></LinearLayout>13.長按條目激活上下文菜單
Java文件
class mClick implements OnClickListener {public void onClick(View v){String passwd;passwd=edit.getText().toString(); if(passwd.equals("abc123")) txt2.setText("歡迎進(jìn)入快樂大本營!"); elsetxt2.setText("非法用戶,請立刻離開!"); }}}XML文件
class mClick implements OnClickListener {public void onClick(View v){String passwd;passwd=edit.getText().toString(); if(passwd.equals("abc123")) txt2.setText("歡迎進(jìn)入快樂大本營!"); elsetxt2.setText("非法用戶,請立刻離開!"); }}}總結(jié)
還有待補(bǔ)充
總結(jié)
以上是生活随笔為你收集整理的Android--初级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Halcon学习---光学字符识别(OC
- 下一篇: pandas.core.base.Spe