前言 大家好,給大家帶來 的概述,希望你們喜歡 前言 如果你想學習Android開發,那你就要瞭解Java編程,這是基礎,也是重點,如果沒學Java語法就先學習,再來學Android,別問可不可以先學Android,都告訴了,先學Java對吧! Android開發的基本瞭解 Android開發主要了 ...
前言
大家好,給大家帶來Android精通教程V
的概述,希望你們喜歡
前言
如果你想學習Android開發,那你就要瞭解Java編程,這是基礎,也是重點,如果沒學Java語法就先學習,再來學Android,別問可不可以先學Android,都告訴了,先學Java對吧!
Android開發的基本瞭解
Android開發主要瞭解這四種重要組件:
- activity為用戶界面,就是說activity可以構成用戶界面。
- ContentProvider是為了設備中存儲的數據,通過創建ContentProvider來實現數據共用。
- Service是運行在後臺的任務,無需用戶直接與之交互。
Intent是一種行為描述機制(如選擇照片,打電話等)。在Android中,幾乎一切都是通過Intent來實現的,這給我們提供了大量替換或重用組件的機會。
描述Android項目結構
AndroidManifest.xml:是一個xml文件,描述了被構建的應用程式。
assets:文件夾是為了存放需要打包到應用程式的靜態文件。
bin:文件夾是為了存放編譯過後的應用程式。
gen:文件夾為了存放生成的源代碼。
libs:文件夾是存放第三方包的jar文件。
src:文件夾是程式的Java源代碼。
res:文件夾存放的是應用程式的資源。
在res文件夾中:
res/drawable/:存放的是圖像
res/layout/:存放是基於xml的文件。
res/menu/:存放的是基於xml的菜單文件。
res/raw/:存放的是通用的文件。
res/valuse/:存放的是字元串。
res/xml/:是通用的xml的文件。
在bin文件夾中:
bin/classes/:存放的是編譯後的Java類文件。
在AndroidManifest.xml文件中:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.edu.gdmec.android.androidstudiodemo">
<!--原為android:theme="@style/AppTheme"-->
<!--去除ActionBar標題欄-->
<!--添加應用圖標,app_icon-->
<application
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--添加實現類-->
<activity android:name=".######"></activity>
</application>
</manifest>
瞭解一下build.gradle(app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "cn.edu.gdmec.android.androidstudiodemo"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
瞭解基本佈局的部件
TextView:瞭解android:typeface
,android:textStyle
,android:textColor
.
EditText:編輯框android:autoText
,android:capitalize
,android:digitas
,android:singleLine
.
內邊距:android:paddingLeft
,android:paddingRight
,android:paddingTop
,android:paddingBottom
RelativeLayout佈局:android:layout_alignParentTop
,android:layout_alignParentBottom
,android:layout_alignParentLeft
,android:layout_alignParentRight
,android:layout_centerHorizontal
,android:layout_centerVertical
,android:centerHorizontal
,android:layout_centerInParent
.
android:layout_above
,android:layout_below
,android:layout_toLeftOf
,android:layout_toRightOf
,android:layout_alignTop
, android:layout_alignBottom
,android:layout_alignLeft
,android:layout_alignRight
,android:layout_alignBaseline
.
TableLayout佈局:
android:stretchColumns
,android:shrinkColumns
,android:collapseColumns
.
//TableLayout
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1">
<TableRow>
<TextView
android:text="姓名:"/>
<EditText
android:id="@+id/xm"
android:layout_span="3"/>
</TableRow>
<View
android:layout_height="2px"
android:background="#000000"/>
<TableRow>
<Button
android:id="@+id/xx"
android:layout_column="2"
android:text="消除"/>
<Button
android:id="@+id/submit"
android:text="發送"/>
</TableRow>
</TableLayout>
適配器
Sting[] items={"h","j","k","a","s","d","b"};
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
<?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">
<TextView
android:id="@+id/selection"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectiorOnTop="false"/>
</LinearLayout>
public class ListViewDemo extends ListActivity{
TextView selection;
String[] items={"a","b","c","d","e","f","g"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setListAdapter(new ArrayAdapter<String>(this,android.R.layout_simple_list_item_1,items));
selection= findViewById(R.id.selection);
}
public void onListItemClick(ListView parent,View v,int position,long id){
selection.setText(items[position]);
}
}
網格
GridView:android:numColumns
,android:verticalSpacing
,android:horizontalSpacing
,android:columnWidth
,android:stretchMode
.
//適配器
<?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">
<TextView
android:id="@+id/selection"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<AutoCompleTextView
android:id="@+id/auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="3"/>
</LinearLayout>
public class AutoCompleteDemo extends Activity implements TextWatcher{
TextView selection;
AutoCompleteTextView auto;
String[] items={"aaav","bbbv","cccv","dddv","eeev","fffv","gggv"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
selection=findViewById(R.id.selection);
auto=findViewById(R.id.auto);
auto.addTextChangedListener(this);
auto.setAdapter(new ArrayAdapter<String>(this,android.R.layout_simple_item_1,items));
}
public void onTextChanged(CharSequence s, int start, int before, int count){
selection.setText(auto.getText());
}
}
Gallery
Gallery:android:spacing
,android:spinnerSelector
,android:drawSelectorOnTop
//適配器
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://echema.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="20px"
android:layout_height="wrap_content"
android:paddingLeft="2px"
android:paddingRight="2px"
android:paddingTop="2px"
android:src="@drawable/image"/>
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
public class Demo extends ListActivity{
TextView selection;
String[] items = { "aaaa","asdg","bsdes","slfl","wete","wetwd","sdfefs"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setListAdapter(new ArrayAdapter<String>(this, R.layout.simple,R.id.label,items));
selection=findViewById(R.id.selection);
}
public void onListItemClick(ListView parent,View v,int position,long id){
selection.setText(items[position]);
}
}
//動態的列表
public class Demo extends ListActivity{
TextView selection;
String[] items = { "aaaa","asdg","bsdes","slfl","wete","wetwd","sdfefs"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setListAdapter(new IconAdapter());
selection=findViewById(R.id.selection);
}
public void onListItemClick(ListView parent,View v,int position,long id){
selection.setText(items[position]);
}
class IconAdapter extends ArrayAdapter {
IconAdapter(){
super(Demo.this,R.layout.simple,items);
}
public View getView(int position, View convertView, ViewGrop parent){
LayoutInflater inflater=getLayoutInflater();
View simple = inflater.inflate(R.layout.simple,parent,false);
TextView label=simple.findViewById(R.id.simple);
label.setText(items[position]);
ImageView icon = simple.findViewById(R.id.icon);
icon.setImageResource(R.drawable.icon);
}
日期與時間
DatePicker
和DatePickerDialog
->DatePickerDialog
-->OnDateChangedListener
和OnDateSetListener
TimePicker
和TimePickerDialog
->TimePickerDialog
-->OnTimeChangedListener
和OnTimeSetListener
主要示例代碼:
Calendar dateTime = Calendar.getInstance();
//日期
DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener(){
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth){
dateTime.set(Calendar.YEAR,year);
dateTime.set(Calendar.MONTH,monthOfYear);
dateTime.set(Calendar.DAY_OF_MONTH,dayOfMonth);
updateLabel();
}
};
//時間
TimePickerDialog.OnTimeSetListener t=new TimePickerDialog.OnTimeSetListener(){
public void onTimeSet(TimePicker view, int hourOfDay, int minute){
dateTime.set(Calendar.HOUR_OF_DAY,hourOfDay);
dateTime.set(Calender.MINUTE,minute);
updateLabel();
}
};
//日期的點擊按鈕
Button btn=findViewById(R.id.date);
btn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
new DatePickerDialog(Demo.this,d,dateTime.get(Calendar.YEAR),dateTime.get(Calendar.MONTH),dateTime.get(Calendar.DAY_OF_MONTH)).show();
}
});
//時間的點擊按鈕
Button btn=findViewById(R.id.time);
btn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
new TimePickerDialog(Demo.this,t,dateTime.get(Calendar.HOUR_OF_DAY),dateTime.get(Calendar.MINUTE),true).show();
}
});
//顯示Calendar
dateTimetv.getTime();// dtl.format();
創建時鐘
DigitalClock
或AnalogClock
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AnalogClock
android:id="@+id/analogclock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alginParentTop="true"/>
<DigitalClock
android:id="@+id/digitalclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/analogclock"/>
</RelativeLayout>
進度條(android.widget.ProgressBar)
進度條可以是水平的,也可以是旋轉輪,你可以用incrementProgressBy()來增加進度,也可以用setProgress()來增加進度。
進度條有很多樣式,Android提供了這些:
- Widget.ProgressBar.Horizontal
- Widget.ProgressBar.Small
- Widget.ProgressBar.Large
- Widget.ProgressBar.Inverse
等。
android.widget.SeekBar
這個是ProgressBar的擴展,這個是可以滑動選擇的進度形式。
用戶可以通過 SeekBar.OnSeekBarChangeListener來操作滑塊的位置。
適配器-android.widget.Adapter
它的子類有:arrayadapter,baseadpter,cursoradapter,listadapter,simpleadapter,spinneradapter
WebView
android.webkit.WebView
這裡的WebView是顯示網頁的視圖,當我們要在WebView中載入網頁的時候,,我們要在android manifest.xml中添加許可權。
<uses-permission android:name = “android.permission.INTERNET” />
如何用代碼,以下顯示:
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
顯示
WebView webview = new WebView(this);
setContentView(webview);
進行載入:
webview.loadUrl(url);
顯示框
public void onClick(View view){
if(view==button1){
new AlertDialog.Builder(this).setTitle("Message").setMessage("ok").setNeutralButton("Close", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int in){
}
}).show();
}
總結
- 本文講了Android精通教程V,如果您還有更好地理解,歡迎溝通
- 定位:分享
Android
&Java
知識點,有興趣可以繼續關註