你好,我想用Android Studio制作一个可以输入我自己的诗作、可以浏览过去的诗作、可以把诗作导出为txt的软件,但是我完全不会代码,你可以分析制作流程,并且给出相关代码吗?
时间: 2024-02-06 19:11:11 浏览: 36
你好,制作一个可以输入、浏览和导出诗作的Android应用需要涉及到以下几个步骤:
1. 设计界面:根据你的需求设计应用的界面,包括输入、浏览和导出诗作的界面。
2. 编写代码:根据设计好的界面,编写代码实现应用的功能。需要涉及到Android的UI控件、文件读写、数据存储等知识。
下面是一个简单的示例代码,可以帮助你了解如何实现一个基本的输入、浏览和导出诗作的应用。
1. 设计界面:
我们可以将应用分为三个界面,分别是输入诗作、浏览诗作和导出诗作。每个界面需要包含对应的UI控件。
输入诗作界面:
使用EditText控件实现输入框,使用Button控件实现保存按钮。
浏览诗作界面:
使用ListView控件展示已存储的诗作,使用Button控件实现删除按钮。
导出诗作界面:
使用Button控件实现导出按钮。
2. 编写代码:
a. 输入诗作:
首先,在res/layout目录下新建一个layout文件,命名为input_poem.xml,用于显示输入诗作的界面。
在MainActivity.java中,我们需要获取输入框和保存按钮的引用,并为保存按钮设置点击事件。在点击事件中,我们可以获取输入框中的文本,然后将其保存到文件中。具体代码如下:
```java
public class MainActivity extends AppCompatActivity {
private EditText mEditText;
private Button mSaveButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input_poem);
mEditText = findViewById(R.id.edit_text);
mSaveButton = findViewById(R.id.save_button);
mSaveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String poem = mEditText.getText().toString();
saveToFile(poem);
}
});
}
private void saveToFile(String poem) {
try {
FileOutputStream fos = openFileOutput("poem.txt", Context.MODE_APPEND);
fos.write(poem.getBytes());
fos.write("\n".getBytes());
fos.close();
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
}
}
}
```
在saveToFile方法中,我们打开一个名为“poem.txt”的文件,并将输入的诗作内容写入文件中。如果保存成功,我们会弹出一个提示框。
b. 浏览诗作:
在res/layout目录下新建一个layout文件,命名为view_poem.xml,用于显示浏览诗作的界面。
在MainActivity.java中,我们需要获取ListView和删除按钮的引用,并为删除按钮设置点击事件。在点击事件中,我们可以删除ListView中选中的诗作,并将其从文件中删除。具体代码如下:
```java
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private Button mDeleteButton;
private ArrayAdapter<String> mAdapter;
private ArrayList<String> mPoems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_poem);
mListView = findViewById(R.id.list_view);
mDeleteButton = findViewById(R.id.delete_button);
mPoems = readFromFile();
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_single_choice, mPoems);
mListView.setAdapter(mAdapter);
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mDeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = mListView.getCheckedItemPosition();
if (position != AdapterView.INVALID_POSITION) {
String poem = mPoems.get(position);
mPoems.remove(poem);
mAdapter.notifyDataSetChanged();
deleteFromFile(poem);
}
}
});
}
private ArrayList<String> readFromFile() {
ArrayList<String> poems = new ArrayList<>();
try {
FileInputStream fis = openFileInput("poem.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
poems.add(line);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return poems;
}
private void deleteFromFile(String poem) {
try {
FileInputStream fis = openFileInput("poem.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
if (!line.equals(poem)) {
sb.append(line).append("\n");
}
}
fis.close();
FileOutputStream fos = openFileOutput("poem.txt", Context.MODE_PRIVATE);
fos.write(sb.toString().getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在readFromFile方法中,我们打开名为“poem.txt”的文件,并读取其中的内容,将其保存到一个ArrayList中。然后,我们使用ArrayAdapter将ArrayList中的内容显示在ListView中。
在deleteFromFile方法中,我们打开名为“poem.txt”的文件,并将其中与选中的诗作相同的行删除,最后将文件重新写入。
c. 导出诗作:
在res/layout目录下新建一个layout文件,命名为export_poem.xml,用于显示导出诗作的界面。
在MainActivity.java中,我们需要为导出按钮设置点击事件。在点击事件中,我们可以打开名为“poem.txt”的文件,将其中的内容保存到SD卡中的一个名为“poem_export.txt”的文件中。具体代码如下:
```java
public class MainActivity extends AppCompatActivity {
private Button mExportButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.export_poem);
mExportButton = findViewById(R.id.export_button);
mExportButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
exportToFile();
}
});
}
private void exportToFile() {
try {
FileInputStream fis = openFileInput("poem.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
File file = new File(Environment.getExternalStorageDirectory(), "poem_export.txt");
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
isr.close();
fis.close();
bw.close();
osw.close();
fos.close();
Toast.makeText(this, "导出成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "导出失败", Toast.LENGTH_SHORT).show();
}
}
}
```
在exportToFile方法中,我们打开名为“poem.txt”的文件,并读取其中的内容。然后,我们创建一个名为“poem_export.txt”的文件,并将读取到的内容写入文件中。
上述代码只是一个简单的示例,还有很多细节需要处理和完善,例如输入框为空时的处理、ListView中没有诗作时的处理等。希望这份代码可以帮助你了解制作Android应用的基本流程和代码实现。