[App]Android Studio First App

准备着看Android Studio的体验如何。

通过Android Studio构建一个默认的项目,添加一些元素

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivityFragment">

    <TextClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textClock"
        android:layout_marginStart="32dp"
        android:layout_toEndOf="@+id/img1" />

    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/analogClock"
        android:layout_alignParentEnd="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/editText"
        android:layout_alignTop="@+id/editText2"
        android:layout_alignStart="@+id/editText2"
        android:layout_marginTop="25dp"
        android:layout_marginRight="150dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="LoadImage"
        android:id="@+id/btnOk"
        android:onClick="btnOnClick"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="UserName"
        android:id="@+id/userName"
        android:layout_alignBaseline="@+id/editText2"
        android:layout_alignBottom="@+id/editText2"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="PassWord"
        android:id="@+id/pwd"
        android:layout_below="@+id/editText2"
        android:layout_alignParentStart="true" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img1"
        android:layout_alignParentBottom="true"
        android:layout_alignEnd="@+id/editText"
        />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="Name"
        android:ems="10"
        android:id="@+id/editText2"
        android:layout_below="@+id/btnOk"
        android:layout_toEndOf="@+id/pwd"
        android:layout_marginRight="150dp" />

</RelativeLayout>

修改AndroidManifest.xml,由于该Demo涉及到从网络下载图片,所以需要添加INTERNET的权限。并设置

android.intent.action.MAIN
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dawnwind.test2" >
<uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="Slark"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

然后修改逻辑代码:

package com.example.dawnwind.test2;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.os.AsyncTask;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

/**
 * A placeholder fragment containing a simple view.
 */
public class MainActivityFragment extends Fragment {
    private ImageView mImageView;
    private Button mBtnLoad;
    private int currentImg = 0;
    private String[] mimageList = new String[]{
       "http://www.bz55.com/uploads/allimg/150701/140-150F1141919-50.jpg",
       "http://b.img.wpxap.com/data/attachment/forum/201507/28/114816eq42vmkvkihsmt88.jpg",
       "http://ww3.sinaimg.cn/mw1024/5e9ffd77gw1euv1m3sbn4j211y0lcwla.jpg",
       "http://ww1.sinaimg.cn/mw1024/5e9ffd77jw1euqs0kiwkij20f00qo40w.jpg",
       "http://ww3.sinaimg.cn/mw1024/5e9ffd77jw1euh1p5we31j219c0pk479.jpg"
    };

    public MainActivityFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View viewItem = inflater.inflate(R.layout.fragment_main, container, false);
        mImageView = (ImageView)viewItem.findViewById(R.id.img1);
        mBtnLoad   = (Button)viewItem.findViewById(R.id.btnOk);
        // set onclick
        mBtnLoad.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                ++currentImg;
                if (currentImg >= mimageList.length)
                {
                    currentImg = 0;
                }
                //改变ImageView里显示的图片
                //mImageView.setImageResource(mimageList[currentImg]);
               
                // run asynctask
                new ImageLoaderTask().execute(mimageList[currentImg]);
                String s_info = "Load: " + String.valueOf(currentImg);
                mBtnLoad.setText(s_info);
            }
        });

        new ImageLoaderTask().execute(mimageList[0]);
        return viewItem;
    }

    // Not suggested to do network jobs in main thread, Thus create a child thread to do work
    class ImageLoaderTask extends AsyncTask<String, Void , Bitmap> {

        // Will run in sub-thread
        protected  Bitmap doInBackground(String... params) {
            return getHttpBitmap(params[0]);
        }

        // Will call in gui-thread
        protected void onPostExecute(Bitmap result) {
            mImageView.setImageBitmap(result);
        }
    }

    public static Bitmap getHttpBitmap(String url){
        URL myFileURL;
        Bitmap bitmap=null;
        try{
            myFileURL = new URL(url);
            //????
            HttpURLConnection conn=(HttpURLConnection)myFileURL.openConnection();
            //???????6000???conn.setConnectionTiem(0);????????
            conn.setConnectTimeout(6000);
            //?????????
            conn.setDoInput(true);
            //?????
            conn.setUseCaches(false);
            //???????????
            conn.connect();
            //?????
            InputStream is = conn.getInputStream();
            //??????
            bitmap = BitmapFactory.decodeStream(is);
            //?????
            is.close();
        }catch(Exception e){
            e.printStackTrace();
        }

        return bitmap;
    }
}

最终效果

原文地址:https://www.cnblogs.com/dawnWind/p/Android_Studio_00.html