<h2>有了问题就搜索百度,搜不到在google,很多资源和答案都是在csdn上找到的,自己使用了别人那么多的资源,自己却没有贡献过什么,甚感羞愧,就把自己写的一点传上来,有不对的地方,欢迎指导。</h2><h3 style="text-align: justify;">这个demo是从TestActivity跳转到MainActivity传值,上代码。</h3>
<h2>有了问题就搜索百度,搜不到在google,很多资源和答案都是在csdn上找到的,自己使用了别人那么多的资源,自己却没有贡献过什么,甚感羞愧,就把自己写的一点传上来,有不对的地方,欢迎指导。</h2><h3 style="text-align: justify;">这个demo是从TestActivity跳转到MainActivity传值,上代码。</h3>
首先是Person类
package com.imooc.cn;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by wulsh on 2016/4/28.
* 序列化要么实现Serializable接口
* 要么实现Parcelable接口,推荐Parcelable
*/
public class Person implements Parcelable {
private String name;
private int age;
private String sex;
private String address;
public Person(String name, String address, String sex, int age) {
this.name = name;
this.address = address;
this.sex = sex;
this.age = age;
}
protected Person(Parcel in) {
name = in.readString();
age = in.readInt();
sex = in.readString();
address = in.readString();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
dest.writeString(sex);
dest.writeString(address);
}
}
TestActivity:
package com.example.wulsh.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Parcelable;
import android.text.util.Linkify;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.imooc.cn.Person;
import java.util.ArrayList;
/**
* Created by wulsh on 2016/4/27.
*/
public class TestActivity extends Activity {
private LinearLayout linearLayout;
private Button btn_change;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
linearLayout = (LinearLayout) findViewById(R.id.linear_bottom);
TextView edt_use = (TextView) findViewById(R.id.edt_use);
char[] char_1 = {'a', 'n', 'd', 'r', 'o', 'i', 'd', 's', 'f', 'g'};
//以数组作为输出依据,从那个元素开始取,一共取出多少个元素
// edt_use.setText(char_1, 0, 7);
edt_use.setAutoLinkMask(Linkify.ALL);//设置自动全部链接
edt_use.setText("Android官网:" + "https://www.android.com");
//改变文字的前景色和字体颜色
edt_use.setBackgroundDrawable(getResources().getDrawable(R.drawable.blue_button_background));
edt_use.setTextColor(Color.MAGENTA);
//得到String文件里面的字符串
CharSequence name = getResources().getString(R.string.text_name);
Log.i("CMCC", name + "");
edt_use.append("," + name);
//获得额屏幕的宽度和高度
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.i("CMCC", "手机屏幕的分辨率为:" + metrics.widthPixels + "*" + metrics.heightPixels);
Toast.makeText(TestActivity.this,
"手机屏幕的分辨率为:" + metrics.widthPixels + "*" + metrics.heightPixels, Toast.LENGTH_LONG).show();
//切换布局
btn_change = (Button) findViewById(R.id.btn_change);
btn_change.setOnClickListener(new MyListener());
//activity之间参数的传递
Button btn_jump = (Button) findViewById(R.id.btn_jump);
btn_jump.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TestActivity.this, MainActivity.class);
Person p = new Person("李老师", "苏州市", "女", 12);
ArrayList<Parcelable> list = new ArrayList<>();
list.add(p);
//使用bundle传值
Bundle bundle = new Bundle();
bundle.putString("sex", "woman");
bundle.putDouble("childNumber", 52);
//bundle传递对象和集合
bundle.putParcelable("person", p);
bundle.putParcelableArrayList("List", list);
//使用intent直接传值
intent.putExtra("name", "Tom");
intent.putExtra("age", 25);
//intent 传递对象
intent.putExtra("person", p);
//intent传递集合
intent.putParcelableArrayListExtra("List", list);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
//在这里测量状态栏的高度
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
Log.i("CMCC", "statusBarHeight:" + statusBarHeight);
//测量根布局的高度
int linearHeight = linearLayout.getHeight();
Log.i("CMCC", "linearHeight:" + linearHeight);
}
public class MyListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if (v == btn_change) {
jumpToSecond();
}
}
}
private void jumpToSecond() {
setContentView(R.layout.activity_mylayout);
Button btn_second_change = (Button) findViewById(R.id.btn_second_change);
btn_second_change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jumpToFirst();
}
});
}
private void jumpToFirst() {
setContentView(R.layout.activity_test);
Button btn_change = (Button) findViewById(R.id.btn_change);
btn_change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jumpToSecond();
}
});
}
}
MainActivity:
package com.example.wulsh.myapplication;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.imooc.cn.Person;
import java.util.List;
import cn.pedant.SweetAlert.SweetAlertDialog;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ListView list_view;
private List<String> list;
private MyAdapter myAdapter;
private int i = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fresco.initialize(MainActivity.this);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn_click);
Button btn1 = (Button) findViewById(R.id.btn_click1);
Button btn2 = (Button) findViewById(R.id.btn_click2);
Button btn3 = (Button) findViewById(R.id.btn_click3);
Button btn4 = (Button) findViewById(R.id.btn_click4);
Button btn5 = (Button) findViewById(R.id.btn_click5);
Button btn6 = (Button) findViewById(R.id.btn_click6);
Button btn7 = (Button) findViewById(R.id.btn_click7);
btn.setOnClickListener(this);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
findViewById(R.id.btn_click8).setOnClickListener(this);
// 下面是Fresco的图片加载框架
list = new ImagesSources().list;
list_view = (ListView) findViewById(R.id.list_view);
myAdapter = new MyAdapter(MainActivity.this, list);
list_view.setAdapter(myAdapter);
//接受来自前一个activity的数据,intent直接传递过来的值
String name = getIntent().getStringExtra("name");
int age = getIntent().getIntExtra("age", -1);
Log.i("CMCC", "intent传过来的name:" + name + ",age:" + age);
Person person = getIntent().getParcelableExtra("person");
Log.i("CMCC", "intent传过来的对象person:" + person.getAddress() + "," + person.getName());
Log.i("CMCC", "intent传过来的集合的长度:" + getIntent().getParcelableArrayListExtra("List").size());
//接收bundle传递过来得值
Bundle bundle = getIntent().getExtras();
Log.i("CMCC", "bundle传过来的sex:" + bundle.getString("sex") + ",childNumber:" + bundle.getDouble("childNumber"));
Person person1 = bundle.getParcelable("person");
Log.i("CMCC", "bundle传过来的对象person:" + person1.getAddress() + "," + person1.getName());
Log.i("CMCC", "bundle传过来的集合的长度:" + bundle.getParcelableArrayList("List").size());
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_click:
final SweetAlertDialog dialog = new SweetAlertDialog(this);
dialog.getProgressHelper().setBarColor(Color.parseColor("#A5DC86"));
dialog.setTitleText("Loading");
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.setCancelText("取消");
dialog.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
dialog.dismissWithAnimation();
}
});
dialog.show();
break;
case R.id.btn_click1:
new SweetAlertDialog(this)
.setContentText("It's pretty, isn't it?")
.show();
break;
case R.id.btn_click2://错误类型
new SweetAlertDialog(this, SweetAlertDialog.ERROR_TYPE)
.setTitleText("Oops...")
.setContentText("Something went wrong!")
.show();
break;
case R.id.btn_click3://成功类型
new SweetAlertDialog(this, SweetAlertDialog.SUCCESS_TYPE)
.setTitleText("Good job!")
.setContentText("You clicked the button!")
.show();
break;
case R.id.btn_click4:
//警告类型
// new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
// .setTitleText("Are you sure?")
// .setContentText("Won't be able to recover this file!")
// .setConfirmText("Yes,delete it!")
// .setCancelText("cancel")
// .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
// @Override
// public void onClick(SweetAlertDialog sDialog) {
// // reuse previous dialog instance
// sDialog.setTitleText("Deleted!")
// .setContentText("Your imaginary file has been deleted!")
// .setConfirmText("OK")
// .setConfirmClickListener(null)
// .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
// }
// })
// .show();
//设置警告样式
final SweetAlertDialog sDialog = new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE);
//设置进度条的颜色
sDialog.getProgressHelper().setBarColor(R.color.colorRed);
sDialog.setCancelable(true);
sDialog.setCanceledOnTouchOutside(true);
//设置内容
sDialog.setTitleText("确定要删除这个吗?");
sDialog.setContentText("删除之后就无法恢复了!");
sDialog.setConfirmText("删除");
sDialog.setCancelText("取消");
sDialog.showCancelButton(true);
sDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sDialog.setTitleText("已删除!");
sDialog.setContentText("你所选中的文件已经删除");
sDialog.setConfirmText("ok");
sDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sDialog.dismissWithAnimation();
}
});
sDialog.changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
sDialog.showCancelButton(false);
}
});
sDialog.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sDialog.setTitleText("取消成功");
sDialog.setContentText("文件未删除");
sDialog.changeAlertType(SweetAlertDialog.ERROR_TYPE);
sDialog.showCancelButton(false);
sDialog.setConfirmText("ok");
sDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sDialog.dismissWithAnimation();
}
});
}
});
sDialog.show();
break;
case R.id.btn_click5:
new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
.setTitleText("Are you sure?")
.setContentText("Won't be able to recover this file!")
.setCancelText("No,cancel plx!")
.setConfirmText("Yes,delete it!")
.showCancelButton(true)
.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
// reuse previous dialog instance, keep widget user state, reset them if you need
sDialog.setTitleText("Cancelled!")
.setContentText("Your imaginary file is safe :)")
.setConfirmText("OK")
.showCancelButton(false)
.setCancelClickListener(null)
.setConfirmClickListener(null)
.changeAlertType(SweetAlertDialog.ERROR_TYPE);
// or you can new a SweetAlertDialog to show
/* sDialog.dismiss();
new SweetAlertDialog(SampleActivity.this, SweetAlertDialog.ERROR_TYPE)
.setTitleText("Cancelled!")
.setContentText("Your imaginary file is safe :)")
.setConfirmText("OK")
.show();*/
}
})
.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
sDialog.setTitleText("Deleted!")
.setContentText("Your imaginary file has been deleted!")
.setConfirmText("OK")
.showCancelButton(false)
.setCancelClickListener(null)
.setConfirmClickListener(null)
.changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
}
})
.show();
break;
case R.id.btn_click6:
new SweetAlertDialog(this, SweetAlertDialog.CUSTOM_IMAGE_TYPE)
.setTitleText("Sweet!")
.setContentText("Here's a custom image.")
.setCustomImage(R.drawable.icon_progress_bar)
.show();
break;
case R.id.btn_click7:
final SweetAlertDialog pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE)
.setTitleText("Loading");
pDialog.show();
pDialog.setCancelable(false);
//用几个计时器模拟耗时
new CountDownTimer(800 * 7, 800) {
public void onTick(long millisUntilFinished) {
// you can change the progress bar color by ProgressHelper every 800 millis
i++;
switch (i) {
case 0:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.blue_btn_bg_color));
break;
case 1:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_deep_teal_50));
break;
case 2:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.success_stroke_color));
break;
case 3:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_deep_teal_20));
break;
case 4:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_blue_grey_80));
break;
case 5:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.warning_stroke_color));
break;
case 6:
pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.success_stroke_color));
break;
}
}
public void onFinish() {
i = -1;
pDialog.setTitleText("Success!")
.setConfirmText("OK")
.changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
}
}.start();
break;
case R.id.btn_click8:
final SweetAlertDialog sweetAlertDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE);
sweetAlertDialog.setTitleText("Loading");
sweetAlertDialog.setCancelable(false);
sweetAlertDialog.show();
new CountDownTimer(1000 * 7, 1000) {
@Override
public void onTick(long millisUntilFinished) {
for (int j = 0; j < 7; j++) {
sweetAlertDialog.getProgressHelper()
.setBarColor(getResources().getColor(R.color.success_stroke_color));
}
}
@Override
public void onFinish() {
sweetAlertDialog.setTitleText("成功!")
.setConfirmText("OK")
.changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
}
}.start();
break;
}
}
}
由于里面我是做了SweetAlertDialog和Freco图片加载框架测试,可以不用理会。