有的时候就很烦,即使你想专心去研究java的一些基础知识,但是如果没有网页、app或者swing的包装来展示他,总是给人一种纸上谈兵的感觉。有的时候我们需要这种东西来提高自己的实战水平。对于Andriod的框架和这种非java的知识,我们做到会用和熟悉就好。下面放一些代码,作为记录,便于查找。
(一)HelloWorld入门
HelloWorldActivity.java
package com.quinnnorris.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class HelloWorldActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//在活动被创建时必须执行的方法onCreate
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_world);
//布局和逻辑分离,加载布局
Log.d("HelloWorldActivity","onCreate execute");
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.quinnnorris.helloworld">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".HelloWorldActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
(二)MyActivity页面间跳转和传递信息
FirstActivity.java
package com.quinnnorris.myactivity;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Log.d("FirstActivity", this.toString());
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
//显示使用Intent,直接指定
//Intent intent = new Intent("com.quinnnorris.myactivity.ACTION_START");
//通过隐式方法使用Intent
//intent.addCategory("com.quinnnorris.myactivity.MY_CATEGORY");
//为intent指定类别
//Intent intent = new Intent(Intent.ACTION_VIEW);
//通过intent启动一些内置方法
//intent.setData(Uri.parse("http://www.baidu.com"));
//intent.setData(Uri.parse("tel:10086"));
String data = "Hello SecondActivity";
//Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data", data);
//startActivity(intent);
//Activity类中提供的方法,启用活动intent
startActivityForResult(intent, 1);
//可以返回数据的启动方法
//Toast.makeText(FirstActivity.this,"You clicked Button 1",Toast.LENGTH_SHORT).show();
//弹出提示信息
//finish();
//销毁当前活动
}
});
}
/**
* 调用本方法,将menu文件中的菜单加载到当前的活动中
*
* @param menu 我们将菜单添加到这个menu参数中
* @return 返回true表示将菜单显示出来
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/**
* 重写该方法,对点击菜单的结果做反应
*
* @param item 这个菜单的内容
* @return 返回ture
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "You Clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You Clicked Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
/**
* 重写这个方法对之前栈返回的数据做处理
*
* @param requestCode 我们约定的请求码
* @param resultCode 我们在返回数据的时候传入的处理结果
* @param data Intent对象,保存着返回的内容
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnData = data.getStringExtra("data_return");
Log.d("FirstActivity", returnData);
}
break;
default:
}
}
}
SecondActivity.java
package com.quinnnorris.myactivity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
final Intent intent = getIntent();
final String data = intent.getStringExtra("extra_data");
Button button1 = (Button) findViewById(R.id.button_2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SecondActivity.this,data,Toast.LENGTH_SHORT).show();
Intent re_intent = new Intent();
re_intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,re_intent);
finish();
}
});
}
/**
* 当我们使用back键返回时,确保回传数据不会丢失
*/
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.quinnnorris.myactivity">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".FirstActivity"
android:launchMode="singleTop"
android:label="This is FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.quinnnorris.myactivity.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.quinnnorris.myactivity.MY_CATEGORY" />
</intent-filter>
</activity>
<activity android:name=".ThirdActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"/>
</intent-filter>
</activity>
</application>
</manifest>
Menu文件夹内:main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Add"
android:id="@+id/add_item" />
<item android:title="Remove"
android:id="@+id/remove_item" />
</menu>
first_layout.xml
<?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">
<Button
android:text="Button 1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button_1" />
</LinearLayout>
second_layout.xml
<?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">
<Button
android:text="Button 2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button_2" />
</LinearLayout>
(三)ActivityLifeCycleTest测试生命周期
MainActivity.java
package com.quinnnorris.activitylifecycletest;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
Button startNormalActivity = (Button) findViewById(R.id.start_normal_activity);
Button startDialogActivity = (Button) findViewById(R.id.start_dialog_activity);
startNormalActivity.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,NormalActivity.class);
startActivity(intent);
}
});
startDialogActivity.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,DialogActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "onRestart");
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.quinnnorris.activitylifecycletest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<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=".NormalActivity">
</activity>
<activity android:name=".DialogActivity"
android:theme="@android:style/Theme">
</activity>
</application>
</manifest>
DialogActivity.java
package com.quinnnorris.activitylifecycletest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
public class DialogActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_layout);
}
}
(四)UIWidgetTest UI设计
MainActivity.java
package com.quinnnorris.uiwidgettest;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.preference.DialogPreference;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private static final String TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
final EditText edit_text = (EditText) findViewById(R.id.edit_text);
final ImageView image_view = (ImageView) findViewById(R.id.image_view);
final ProgressBar progress_bar = (ProgressBar) findViewById(R.id.progressBar4);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//String edit_data = edit_text.getText().toString();
//Toast.makeText(MainActivity.this, edit_data, Toast.LENGTH_SHORT).show();
//image_view.setImageResource(R.drawable.img_2);
//if(progress_bar.getVisibility() == View.GONE)
// progress_bar.setVisibility(View.VISIBLE);
//else
// progress_bar.setVisibility(View.GONE);
//int pro = progress_bar.getProgress();
//pro +=10;
//progress_bar.setProgress(pro);
/*AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("This is a Dialog");
dialog.setMessage("Something important");
dialog.setCancelable(false);
是否可以被取消,不可取消情况下back键也无效
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();*/
/*ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("This is ProgressDialog");
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.show();*/
break;
default:
break;
}
}
});
}
}
activity_main.xml
<?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"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/progress_bar"
app:layout_collapseParallaxMultiplier="1.0">
<TextView
android:text="this is TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@+id/text_view"
android:textColor="#00ff00"
android:textSize="24sp"
android:fontFamily="cursive" />
<Button
android:text="Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:textAllCaps="false" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/edit_text"
android:maxLines="2"
android:hint="this is your name" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/img_1"
android:id="@+id/image_view" />
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progressBar3" />
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progressBar4"
android:max="100" />
</LinearLayout>