Android精通教程V
前言
大家好,给大家带来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
知识点,有兴趣可以继续关注
推荐阅读
-
android studio教程及android环境搭建
-
Android图片处理:识别图像方向并显示实例教程
-
Android桌面组件App Widget用法入门教程
-
android菜鸟教程目录(android 四大组件详解)
-
DriveWorks Solo V15破解版安装图文教程(支持SolidWorks2017)
-
Android MVP模式实战教程
-
Android EasyPermissions官方库高效处理权限相关教程
-
往Android系统中添加服务的方法教程
-
Android studio配置lambda表达式教程
-
Android Studio怎么用?Android Studio使用教程图文详解