前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android精通教程V

Android精通教程V

作者头像
达达前端
发布2019-07-03 12:20:09
7810
发布2019-07-03 12:20:09
举报
文章被收录于专栏:达达前端

前言

大家好,我是 Vic,今天给大家带来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文件中:

代码语言:javascript
复制
<?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)

代码语言:javascript
复制
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.

代码语言:javascript
复制
//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>

适配器

代码语言:javascript
复制
Sting[] items={"h","j","k","a","s","d","b"};
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
代码语言:javascript
复制
<?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>
代码语言:javascript
复制
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.

代码语言:javascript
复制
//适配器
<?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>
代码语言:javascript
复制
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

代码语言:javascript
复制
//适配器
<?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>
代码语言:javascript
复制
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]);
 }
}
代码语言:javascript
复制
//动态的列表
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 主要示例代码:

代码语言:javascript
复制
Calendar dateTime = Calendar.getInstance();
代码语言:javascript
复制
//日期
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();
  }
};
代码语言:javascript
复制
//时间
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();
  }
};
代码语言:javascript
复制
//日期的点击按钮
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();
 }
});
代码语言:javascript
复制
//时间的点击按钮
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();
 }
});
代码语言:javascript
复制
//显示Calendar
dateTimetv.getTime();// dtl.format();

创建时钟

DigitalClockAnalogClock

代码语言:javascript
复制
<?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中添加权限。

代码语言:javascript
复制
<uses-permission android:name = “android.permission.INTERNET” />  

如何用代码,以下显示:

代码语言:javascript
复制
 Uri uri = Uri.parse(url);
 Intent intent = new Intent(Intent.ACTION_VIEW, uri);
 startActivity(intent);

显示

代码语言:javascript
复制
WebView webview = new WebView(this);
 setContentView(webview);

进行加载:

代码语言:javascript
复制
webview.loadUrl(url);

显示框

代码语言:javascript
复制
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知识点,有兴趣可以继续关注
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.04.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 前言
      • Android开发的基本了解
        • 描述Android项目结构
          • 了解基本布局的部件
            • 适配器
              • 网格
                • Gallery
                  • 日期与时间
                    • 创建时钟
                      • 进度条(android.widget.ProgressBar)
                        • 适配器-android.widget.Adapter
                          • WebView
                            • 显示框
                              • 总结
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档