• [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;
        }
    }

    最终效果

  • 相关阅读:
    赋值运算符函数
    系统设计面试题分析
    内核线程和用户线程的区别
    线程和进程区别
    TCP程序设计
    UDP程序设计
    死锁,死锁必要条件及处理策略
    Linux进程同步机制
    Windows与Linux下进程间通信技术比较
    Windows下进程通信方式
  • 原文地址:https://www.cnblogs.com/dawnWind/p/Android_Studio_00.html
Copyright © 2020-2023  润新知