zoukankan      html  css  js  c++  java
  • Android精通教程V

    前言

    大家好,我是 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文件中:

    <?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_alignTopandroid: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 androidname = “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知识点,有兴趣可以继续关注
  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/dashucoding/p/11932638.html
Copyright © 2011-2022 走看看