Navigation bar modified; Navigation Drawer UI designed

This commit is contained in:
Jerry Wu 2018-07-12 23:50:10 +08:00
parent 0c20f7275f
commit a7a6a09c33
8 changed files with 204 additions and 67 deletions

View File

@ -7,6 +7,9 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
@ -22,40 +25,24 @@ import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.text.Html;
import android.text.Layout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.KeyStore;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@ -65,6 +52,7 @@ public class MainActivity extends AppCompatActivity
TextView messageText;
Button uploadButton, choose;
EditText editFileName;
ImageView imageView;
String uploadServerUri = null;
InputStream in;
@ -89,19 +77,12 @@ public class MainActivity extends AppCompatActivity
messageText = findViewById(R.id.messageText);
editFileName = findViewById(R.id.fileName);
button3 = findViewById(R.id.button3);
imageView = findViewById(R.id.imageView);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
@ -386,19 +367,38 @@ public class MainActivity extends AppCompatActivity
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
if (id == R.id.nav_file) {
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_site) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_homework) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_email) {
} else if (id == R.id.nav_send) {
} else if (id == R.id.nav_schedule) {
} else if (id == R.id.nav_info) {
} else if (id == R.id.nav_passwd) {
new Thread(new Runnable() {
@Override
public void run() {
Network.httpsRequestPost(Network.CHANGE_PWD_URI, new HashMap<String, String>());
final Drawable drawable = Network.getDrawable("https://ldap.ck.tp.edu.tw/admin/code.php");
Log.e("TAG", String.valueOf(drawable==null));
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e("TAG_INSIDE", String.valueOf(drawable==null));
imageView.setImageDrawable(drawable);
}
});
}
}).start();
}
Toast.makeText(getApplicationContext(), "你點選了!!", Toast.LENGTH_SHORT).show();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);

View File

@ -4,6 +4,9 @@ import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.support.v4.provider.DocumentFile;
@ -19,6 +22,7 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;
import java.util.Set;
@ -29,6 +33,7 @@ import java.util.Set;
public class Network {
public static final String LOGIN_URI = "http://study.ck.tp.edu.tw/login_chk.asp";
public static final String LOGOUT_URI = "http://study.ck.tp.edu.tw/logout.asp";
public static final String CHANGE_PWD_URI = "https://ldap.ck.tp.edu.tw/admin/chpass.php";
public static String uploadFile(String sourceFileUri, InputStream in, String uploadFileName) {
@ -377,6 +382,88 @@ public class Network {
return response;
}
public static String httpsRequestPost(String uri, Map<String, String> params){
URLConnection conn;
DataOutputStream dos;
String response = null;
try {
// open a URL connection to the Servlet
URL url = new URL(uri);
// Open a HTTP connection to the URL
conn = url.openConnection();
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
conn.setRequestProperty("Connection", "Keep-Alive");
dos = new DataOutputStream(conn.getOutputStream());
Set keySet = params.keySet();
StringBuilder sb = new StringBuilder();
for (Object objKey : keySet) {
//有了鍵就可以通過map集合的get方法獲取其對應的値
String key = objKey.toString();
String value = params.get(key);
sb.append(key).append("=").append(value).append("&");
Log.e("Params", "key: " + key + ", value: " + value);
}
if(params.size() != 0){
sb.deleteCharAt(sb.length()-1);
}
Log.e("StringBuilder", sb.toString());
dos.writeBytes(sb.toString());
// Responses from the server (code and message)
try{
BufferedReader br;
br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
response = sb.toString();
Log.e("Response", response);
} catch(java.io.IOException e){
e.printStackTrace();
}
dos.flush();
dos.close();
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("Upload file to server", "error: " + e.getMessage(), e);
} catch (Exception e) {
e.printStackTrace();
Log.e("Upload", "Exception : "
+ e.getMessage(), e);
}
return response;
}
public static Drawable getDrawable(String imageUrl)
{
try
{
URL url = new URL(imageUrl);
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
return Drawable.createFromStream(input, imageUrl);
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
}
}

View File

@ -0,0 +1,4 @@
<vector android:height="108dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="108dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
</vector>

View File

@ -22,12 +22,5 @@
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>

View File

@ -86,4 +86,19 @@
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<ImageView
android:id="@+id/imageView"
android:layout_width="200dp"
android:layout_height="52dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button3" />
</android.support.constraint.ConstraintLayout>

View File

@ -1,36 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:layout_height="wrap_content"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="84dp"
android:layout_height="84dp"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@mipmap/ic_launcher_round" />
android:src="@drawable/ic_account_circle_black" />
<TextView
android:id="@+id/userName"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Android Studio"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/userAccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android.studio@android.com" />
<TextView
android:id="@+id/userName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Android Studio"
android:textAlignment="textStart"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/userAccount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="android.studio@android.com" />
</LinearLayout>
</LinearLayout>

View File

@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<!--group android:checkableBehavior="single">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/ic_menu_camera"
@ -20,18 +20,46 @@
android:id="@+id/nav_manage"
android:icon="@drawable/ic_menu_manage"
android:title="Tools" />
</group>
</group-->
<item android:title="Communicate">
<item android:title="檔案資源">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="Share" />
android:id="@+id/nav_file"
android:title="檔案" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="Send" />
android:id="@+id/nav_site"
android:title="網站" />
</menu>
</item>
<item android:title="作業專區">
<menu>
<item
android:id="@+id/nav_homework"
android:title="繳交作業" />
</menu>
</item>
<item android:title="其他">
<menu>
<item
android:id="@+id/nav_email"
android:title="家長Email登錄" />
<item
android:id="@+id/nav_schedule"
android:title="課表查詢(外部連結)" />
</menu>
</item>
<item android:title="個人專區">
<menu>
<item
android:id="@+id/nav_info"
android:title="個人資訊" />
<item
android:id="@+id/nav_passwd"
android:title="修改密碼" />
</menu>
</item>

View File

@ -1,7 +1,7 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="activity_horizontal_margin">4dp</dimen>
<dimen name="activity_vertical_margin">12dp</dimen>
<dimen name="nav_header_vertical_spacing">8dp</dimen>
<dimen name="nav_header_height">176dp</dimen>
<dimen name="fab_margin">16dp</dimen>