Android——数据存储(四种方式之二)读写SD卡——练习
1保存到SDK ——字符串方式
<span style="font-size:18px;"><strong>package com.example.jreduch08.SDK;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import com.example.jreduch08.R;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class SdActivity extends AppCompatActivity {
private CheckBox c1,c2,c3,c4,c5,c6;
private Button bt0, bt1,bt2;
private TextView tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.setting);
getSupportActionBar().hide();
c1= (CheckBox) findViewById(R.id.c1);
c2= (CheckBox) findViewById(R.id.c2);
c3= (CheckBox) findViewById(R.id.c3);
c4= (CheckBox) findViewById(R.id.c4);
c5= (CheckBox) findViewById(R.id.c5);
c6= (CheckBox) findViewById(R.id.c6);
bt0= (Button) findViewById(R.id.bt0);
bt1= (Button) findViewById(R.id.bt1);
bt2= (Button) findViewById(R.id.bt2);
tv3= (TextView) findViewById(R.id.tv3);
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(SdActivity.this);
builder.setTitle("字体大小请选择");
builder.setIcon(R.mipmap.ic_launcher);
final String[] items={"大","中","小"};
// builder.setMultiChoiceItems()多选
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
Toast.makeText(getBaseContext(), items[i].toString(), Toast.LENGTH_SHORT).show();
tv3.setText(items[i].toString());
dialog.dismiss();
}
});
builder.setCancelable(false);
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
});
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveFile();
}
});
bt0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(SdActivity.this,ShowActivity.class);
startActivity(intent);
}
});
}
//保存文件到SD卡
public void saveFile(){
FileOutputStream fos=null;
//获取SD卡状态
String state= Environment.getExternalStorageState();
//判断SD卡是否就绪
if(!state.equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(this,"请检查SD卡",Toast.LENGTH_SHORT).show();
return;
}
//取得SD卡根目录
File file= Environment.getExternalStorageDirectory();
try {
Log.d("=====SD卡根目录:",file.getCanonicalPath().toString());
// File myFile=new File(file.getCanonicalPath()+"/sd.txt");
// fos=new FileOutputStream(myFile);
//输出流的构造参数1可以是 File对象 也可以是文件路径
//输出流的构造参数2:默认为False=>覆盖内容;ture=》追加内容
//追加 ,ture
fos=new FileOutputStream(file.getCanonicalPath()+"/sd.txt");
String str="列表是否显示摘要:"+c1.isChecked()+":字体大小:"+tv3.getText().toString()
+":推送通知:"+c2.isChecked()+":互动插件:"+c3.isChecked()
+":自动优化阅读:"+c4.isChecked()+":收藏时转发:"+c5.isChecked()
+":顶踩时转发:"+c6.isChecked();
fos.write(str.getBytes());
Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
protected void onStart() {
super.onStart();
String str=readFile();
String str1[]=str.split(":");
c1.setChecked(Boolean.parseBoolean(str1[1]));
c2.setChecked(Boolean.parseBoolean(str1[5]));
c3.setChecked(Boolean.parseBoolean(str1[7]));
c4.setChecked(Boolean.parseBoolean(str1[9]));
c5.setChecked(Boolean.parseBoolean(str1[11]));
c6.setChecked(Boolean.parseBoolean(str1[13]));
}
//从SD卡读取文件
public String readFile(){
BufferedReader reader=null;
FileInputStream fis=null;
StringBuilder sbd=new StringBuilder();
String statu= Environment.getExternalStorageState();
if (!statu.equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(this,"SD卡未就绪",Toast.LENGTH_SHORT).show();
return "";
}
File root=Environment.getExternalStorageDirectory();
try {
fis=new FileInputStream(root+"/sd.txt");
reader= new BufferedReader(new InputStreamReader(fis));
String row="";
try {
while ((row=reader.readLine())!=null){
sbd.append(row);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
Toast.makeText(this,"文件不存在",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}finally {
if (reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sbd.toString();
}
}
</strong></span>
<span style="font-size:18px;"><strong><?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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取"
android:id="@+id/bt0"
android:background="#feffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置"
android:textSize="30sp"
android:layout_marginLeft="80dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="意见反馈"
android:id="@+id/bt1"
android:background="#feffff"
android:layout_marginLeft="50dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"></LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表显示摘要"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:layout_marginLeft="150dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="字体大小"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中"
android:textSize="25sp"
android:layout_marginLeft="205dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=">"
android:textSize="30sp"
android:id="@+id/bt2"
android:background="#feffff"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表页评论"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="不限 >"
android:textSize="25sp"
android:layout_marginLeft="153dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2G/3G网络流量"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="较省流量(普通下载)>"
android:textSize="15sp"
android:layout_marginLeft="15dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="清理缓存"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前缓存:2.48MB>"
android:textSize="20sp"
android:layout_marginLeft="70dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="推送通知"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="200dp"
android:checked="true"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="互动插件"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="200dp"
android:checked="true"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自动优化阅读"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="152dp"
android:checked="true"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="收藏时转发"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="175dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="顶踩时转发"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="175dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
</LinearLayout>
</ScrollView>
</LinearLayout></strong></span>
package com.example.jreduch08.SDK;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;
import com.example.jreduch08.R;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShowActivity extends AppCompatActivity {
private TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
show= (TextView) findViewById(R.id.show);
show.setText(readFile());
}
//从SD卡读取文件
public String readFile(){
BufferedReader reader=null;
FileInputStream fis=null;
StringBuilder sbd=new StringBuilder();
String statu= Environment.getExternalStorageState();
if (!statu.equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(this,"SD卡未就绪",Toast.LENGTH_SHORT).show();
return "";
}
File root=Environment.getExternalStorageDirectory();
try {
fis=new FileInputStream(root+"/sd.txt");
reader= new BufferedReader(new InputStreamReader(fis));
String row="";
try {
while ((row=reader.readLine())!=null){
sbd.append(row);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
Toast.makeText(this,"文件不存在",Toast.LENGTH_SHORT).show();
e.printStackTrace();
}finally {
if (reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sbd.toString();
}
}
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.jreduch08.SDK.ShowActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/show"
android:textSize="20sp"
android:text="读取结果显示"
/>
</RelativeLayout>
保存到SDK——对象 类
package com.example.jreduch08.entity;
import java.io.Serializable;
/**
* Created by 冲天之峰 on 2016/8/16.
*/
public class Settings implements Serializable {
private boolean c1;
private boolean c2;
private boolean c3;
private boolean c4;
private boolean c5;
private boolean c6;
private String textsize;
public Settings(String textsize, boolean c6, boolean c5, boolean c4, boolean c3, boolean c2, boolean c1) {
this.textsize = textsize;
this.c6 = c6;
this.c5 = c5;
this.c4 = c4;
this.c3 = c3;
this.c2 = c2;
this.c1 = c1;
}
public boolean isC1() {
return c1;
}
public void setC1(boolean c1) {
this.c1 = c1;
}
public boolean isC2() {
return c2;
}
public void setC2(boolean c2) {
this.c2 = c2;
}
public boolean isC3() {
return c3;
}
public void setC3(boolean c3) {
this.c3 = c3;
}
public boolean isC4() {
return c4;
}
public void setC4(boolean c4) {
this.c4 = c4;
}
public boolean isC5() {
return c5;
}
public void setC5(boolean c5) {
this.c5 = c5;
}
public boolean isC6() {
return c6;
}
public void setC6(boolean c6) {
this.c6 = c6;
}
public String getTextsize() {
return textsize;
}
public void setTextsize(String textsize) {
this.textsize = textsize;
}
public Settings() {
}
}
package com.example.jreduch08.entity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import com.example.jreduch08.R;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;
public class DuixActivity extends AppCompatActivity {
private CheckBox c1, c2, c3, c4, c5, c6;
private Button bt0, bt1, bt2;
private TextView tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_duix);
getSupportActionBar().hide();
c1 = (CheckBox) findViewById(R.id.c1);
c2 = (CheckBox) findViewById(R.id.c2);
c3 = (CheckBox) findViewById(R.id.c3);
c4 = (CheckBox) findViewById(R.id.c4);
c5 = (CheckBox) findViewById(R.id.c5);
c6 = (CheckBox) findViewById(R.id.c6);
bt0 = (Button) findViewById(R.id.bt0);
bt1 = (Button) findViewById(R.id.bt1);
bt2 = (Button) findViewById(R.id.bt2);
tv3 = (TextView) findViewById(R.id.tv3);
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(DuixActivity.this);
builder.setTitle("字体大小请选择");
builder.setIcon(R.mipmap.ic_launcher);
final String[] items = {"大", "中", "小"};
// builder.setMultiChoiceItems()多选
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
Toast.makeText(getBaseContext(), items[i].toString(), Toast.LENGTH_SHORT).show();
tv3.setText(items[i].toString());
dialog.dismiss();
}
});
builder.setCancelable(false);
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
});
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Settings sets = new Settings();
sets.setC1(c1.isChecked());
sets.setC2(c2.isChecked());
sets.setC3(c3.isChecked());
sets.setC4(c4.isChecked());
sets.setC5(c5.isChecked());
sets.setC6(c6.isChecked());
sets.setTextsize(tv3.getText().toString());
String state = Environment.getExternalStorageState();
if (!state.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(getBaseContext(), "请检查SD卡", Toast.LENGTH_SHORT).show();
return;
}
File root = Environment.getExternalStorageDirectory();
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(root + "/ttings.txt");
oos = new ObjectOutputStream(fos);
oos.writeObject(sets);
Toast.makeText(getBaseContext(), "保存成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
});
bt0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(DuixActivity.this,Show1Activity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
readSettings();
}
public void readSettings() {
File root = Environment.getExternalStorageDirectory();
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(root+ "/ttings.txt");
ois = new ObjectInputStream(fis);
Settings sets = (Settings) ois.readObject();
tv3.setText(sets.getTextsize());
c1.setChecked(sets.isC1());
c2.setChecked(sets.isC2());
c3.setChecked(sets.isC3());
c4.setChecked(sets.isC4());
c5.setChecked(sets.isC5());
c6.setChecked(sets.isC6());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
<?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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取"
android:id="@+id/bt0"
android:background="#feffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置"
android:textSize="30sp"
android:layout_marginLeft="80dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="意见反馈"
android:id="@+id/bt1"
android:background="#feffff"
android:layout_marginLeft="50dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"></LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表显示摘要"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:layout_marginLeft="150dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="字体大小"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="中"
android:textSize="25sp"
android:layout_marginLeft="205dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=">"
android:textSize="30sp"
android:id="@+id/bt2"
android:background="#feffff"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表页评论"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="不限 >"
android:textSize="25sp"
android:layout_marginLeft="153dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2G/3G网络流量"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="较省流量(普通下载)>"
android:textSize="15sp"
android:layout_marginLeft="15dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="清理缓存"
android:textSize="25sp"
/>
<TextView
android:id="@+id/tv9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前缓存:2.48MB>"
android:textSize="20sp"
android:layout_marginLeft="70dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="推送通知"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="200dp"
android:checked="true"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="互动插件"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="200dp"
android:checked="true"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自动优化阅读"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="152dp"
android:checked="true"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="收藏时转发"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="175dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
>
<TextView
android:id="@+id/tv14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="顶踩时转发"
android:textSize="25sp"
/>
<CheckBox
android:id="@+id/c6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="175dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#a9a8a8"
></View>
</LinearLayout>
</ScrollView>
</LinearLayout>
package com.example.jreduch08.entity;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import com.example.jreduch08.R;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.StreamCorruptedException;
public class Show1Activity extends AppCompatActivity {
private TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show1);
show= (TextView) findViewById(R.id.show);
readSettings();
}
public void readSettings() {
File root = Environment.getExternalStorageDirectory();
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(root+ "/ttings.txt");
ois = new ObjectInputStream(fis);
Settings sets = (Settings) ois.readObject();
show.setText(sets.getTextsize()+sets.isC1()+sets.isC2()+sets.isC3()+sets.isC4()
+sets.isC5()+sets.isC6());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.jreduch08.SDK.ShowActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/show"
android:textSize="20sp"
android:text="读取结果显示"
/>
</RelativeLayout>
内存储——SharePreference
package com.example.jreduch08.Sharepreferences;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import com.example.jreduch08.R;
public class SharePreferenceZyfActivity extends AppCompatActivity {
private CheckBox c1,c2,c3,c4,c5,c6;
private Button bt0, bt1,bt2;
private TextView tv3,show;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_share_preference_zyf);
getSupportActionBar().hide();
c1= (CheckBox) findViewById(R.id.c1);
c2= (CheckBox) findViewById(R.id.c2);
c3= (CheckBox) findViewById(R.id.c3);
c4= (CheckBox) findViewById(R.id.c4);
c5= (CheckBox) findViewById(R.id.c5);
c6= (CheckBox) findViewById(R.id.c6);
bt0= (Button) findViewById(R.id.bt0);
bt1= (Button) findViewById(R.id.bt1);
bt2= (Button) findViewById(R.id.bt2);
tv3= (TextView) findViewById(R.id.tv3);
show= (TextView) findViewById(R.id.show);
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(SharePreferenceZyfActivity.this);
builder.setTitle("字体大小请选择");
builder.setIcon(R.mipmap.ic_launcher);
final String[] items={"大","中","小"};
// builder.setMultiChoiceItems()多选
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
Toast.makeText(getBaseContext(), items[i].toString(), Toast.LENGTH_SHORT).show();
tv3.setText(items[i].toString());
dialog.dismiss();
}
});
builder.setCancelable(false);
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
});
//读取 SharePreference
sp=getSharedPreferences("userInfo",MODE_PRIVATE);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//保存数据到SharePreference
SharedPreferences.Editor editor=sp.edit();
editor.putString("text",tv3.getText().toString());
editor.putBoolean("cc1",c1.isChecked());
editor.putBoolean("cc2",c2.isChecked());
editor.putBoolean("cc3",c3.isChecked());
editor.putBoolean("cc4",c4.isChecked());
editor.putBoolean("cc5",c5.isChecked());
editor.putBoolean("cc6",c6.isChecked());
editor.commit();
}
});
}
public void setSettings(){
Boolean ccc1=sp.getBoolean("cc1",false);
Boolean ccc2=sp.getBoolean("cc2",false);
Boolean ccc3=sp.getBoolean("cc3",false);
Boolean ccc4=sp.getBoolean("cc4",false);
Boolean ccc5=sp.getBoolean("cc5",false);
Boolean ccc6=sp.getBoolean("cc6",false);
String text1=sp.getString("text","中");
c1.setChecked(ccc1);
c2.setChecked(ccc2);
c3.setChecked(ccc3);
c4.setChecked(ccc4);
c5.setChecked(ccc5);
c6.setChecked(ccc6);
tv3.setText(text1);
}
@Override
protected void onStart() {
super.onStart();
setSettings();
}
}
解析JSON
//json对应json数据中的{ } 大括号
JSONObject obj=new JSONObject(sbd.toString());
//json数值对应json数据中的【】 中括号
JSONArray ja=obj.getJSONArray("data");
package com.example.jreduch08;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class PaserJsonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paser_json);
StringBuilder sbd=new StringBuilder();
BufferedReader reader=null;
InputStream is=null;
try {
is=getResources().getAssets().open("cityinfo2.txt");
reader=new BufferedReader(new InputStreamReader(is));
String row="";
while ((row=reader.readLine())!=null){
sbd.append(row);
// sbd.append("\n");
}
try {
//json对应json数据中的{ } 大括号
JSONObject obj=new JSONObject(sbd.toString());
//json数值对应json数据中的【】 中括号
JSONArray ja=obj.getJSONArray("data");
for (int i=0;i<ja.length();i++){
JSONObject jo=(JSONObject) ja.get(i);
if (jo.has("name")){
String name=jo.getString("name");
Log.d("====",name);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package com.example.jreduch08.Sharepreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.example.jreduch08.R;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class PaserJson2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paser_json2);
StringBuilder sbd=new StringBuilder();
BufferedReader reader=null;
InputStream is=null;
try {
is=getResources().getAssets().open("jsonNews.txt");
reader=new BufferedReader(new InputStreamReader(is));
String row="";
while ((row=reader.readLine())!=null){
sbd.append(row);
// sbd.append("\n");
}
try {
//json对应json数据中的{ } 大括号
JSONObject obj = new JSONObject(sbd.toString());
//json数值对应json数据中的【】 中括号
JSONObject ja = obj.getJSONObject("showapi_res_body");
JSONObject ja1 = ja.getJSONObject("pagebean");
JSONArray ja2 = ja1.getJSONArray("contentlist");
for (int k = 0; k < ja2.length(); k++) {
JSONObject jo = (JSONObject) ja2.get(k);
if (jo.has("content")) {
String content = jo.getString("content");
Log.d("====", content);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}