前言

大家好,给大家带来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);
}

日期与时间

DatePickerDatePickerDialog->DatePickerDialog-->OnDateChangedListenerOnDateSetListener

TimePickerTimePickerDialog->TimePickerDialog-->OnTimeChangedListenerOnTimeSetListener

主要示例代码:

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();

创建时钟

DigitalClockAnalogClock

<?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精通教程V的更多相关文章

  1. Android精通教程-第一节Android入门简介

    前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be ...

  2. Android精通教程-Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease ...

  3. Android扫盲教程大全经典教程全分享

    Android扫盲教程大全经典教程全分享,相当于android的简单用户手册下载路径 Android扫盲教程大全经典教程全分享.rar

  4. Android 游戏教程让人物动起来

    在这里给大家分享Android游戏教程怎样让人物动起来,话不多说了,直接进入正题. 一. 准备工作     首先要准备好要使用的人物动作图和地形图.把它分割成16个不同的动作,循环播放同一行的4个不同 ...

  5. Android studio教程

    Android studio教程: http://jingyan.baidu.com/season/44062

  6. xp-win7-win8的基础到精通教程-系统优化减肥教程-windos装mac

    是否还在使用别人封装的系统?是否还在担心下载后的系统是有病毒的?还在为 安装好新系统后,里面安装的软件全是自己不需要的?担心流氓软件绑定浏览器主页?担心 系统重装后,自己所有的编程软件都需要重新安装? ...

  7. Android开发教程大全介绍

    Android是由谷歌在2007年推出的一个开放系统平台,主要针对移动设备市场,目前版本为Android 4.0.Android基于Linux,开发者可以使用Java或C/C++开发Android应用 ...

  8. ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView

    原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http:/ ...

  9. ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map

    原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NE ...

随机推荐

  1. C# 字符串 输出格式 指定间隔 通用性很强

    C#winform string s = "FE 68 01 00 1111 11 11 68 1104 35 33B337 7C 16"; string r = Regex.Re ...

  2. Scrollview包裹布局问题。

    输入框获取焦点,键盘弹出,背景图片上移: https://blog.csdn.net/wljian1/article/details/79962802 android:scrollbarThumbVe ...

  3. Windows 10同步时间的方法

    今天在安装了Windows 10 1809(October 2018 update)之后发现时间不能同步,以前并没有出现这种情况. 1) 打开控制面板,找到时钟域地区 2) 选择日期和时间 3) 选择 ...

  4. Selenium Webdriver元素定位的八种常用方式(转载)

    转载自 https://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或 ...

  5. day42 字段的增删改查详细操作

    复习 # 1.表的详细操作 create table nt like ot; # 只复制表的结构包括约束 create table nt select * from ot where 1=2; # 复 ...

  6. python--第十天总结(IO多路复用)

    服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking IO):默认创建的s ...

  7. C++ 获取字符串中的所有汉字

    #include<iostream> using namespace std; int main() {    char str[20] = "cd大家好df";   ...

  8. vue 自动识别PC、移动端,并跳转到对应页面

    app.vuehead中添加 <!--自动识别PC.移动--> <script src="static/js/uaredirect.js" type=" ...

  9. 用rekit创建react项目

    第一步  先进入github.com 然后搜索rekit 往下滑 1 . 先全局安装 npm install -g rekit 2 . 进入自己想要创建项目文件的目录输入 rekit create / ...

  10. ubuntu输入法

    一直都是使用搜狗的,但是感觉一直都不兼容.经常输入一串文字导致输入法崩溃 比如 ‘外显’waixian就崩了. 而且会出现fcitx 100%cpu占用的情况 pkill fcitx &&am ...