2014.4.17
lisa1.1正式出炉,先上程序,今晚补上说明
package lisa.l;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
// five sub-object, including 5 edittext and one textview will be operated
// in this activity, the only sub-object not declared here is textView1
String path = Environment.getExternalStorageDirectory() + "/lisa/";
File filex = new File(path);
File m1 = new File(path + "m1.txt");//lisa 1.2中把五个txt文件合并为一个xml文件,xml文件略大于5个txt文件之和
File m2 = new File(path + "m2.txt");
File m3 = new File(path + "m3.txt");
File m4 = new File(path + "m4.txt");
File m5 = new File(path + "m5.txt");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (!filex.exists()) {
try {
filex.mkdirs();
m1.createNewFile();
m2.createNewFile();
m3.createNewFile();
m4.createNewFile();
m5.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
EditText editText1 = (EditText) findViewById(R.id.editText1);
EditText editText2 = (EditText) findViewById(R.id.editText2);
EditText editText3 = (EditText) findViewById(R.id.editText3);
EditText editText4 = (EditText) findViewById(R.id.editText4);
EditText editText5 = (EditText) findViewById(R.id.editText5);
TextView textView = (TextView) findViewById(R.id.textView2);
// show saved text
show(editText1, m1);
show(editText2, m2);
show(editText3, m3);
show(editText4, m4);
show(editText5, m5);
// set the action of button on click
// show the current date
String date = DateFormat.getDateInstance(DateFormat.FULL).format(
new Date());
textView.setText(date);
}
public void save(EditText edittext, File m) {
// get text in sub-object editText and set it to file m
DataOutputStream out;
String s = edittext.getText().toString();
try {
// if any text exists in a EditText, a new file will be used to
// store the new text instead of the old one
if (s.length() != 0) {
m.delete();
m.createNewFile();
}
out = new DataOutputStream(new FileOutputStream(m));
out.writeUTF(s);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void show(EditText edittext, File m) {
// show texts in files if any
DataInputStream in;
try {
in = new DataInputStream(new FileInputStream(m));
edittext.setText(in.readUTF());
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onSaveClick(View v) {
EditText editText1 = (EditText) findViewById(R.id.editText1);
EditText editText2 = (EditText) findViewById(R.id.editText2);
EditText editText3 = (EditText) findViewById(R.id.editText3);
EditText editText4 = (EditText) findViewById(R.id.editText4);
EditText editText5 = (EditText) findViewById(R.id.editText5);
// save text in each EditText to each File
save(editText1, m1);
save(editText2, m2);
save(editText3, m3);
save(editText4, m4);
save(editText5, m5);
// show this after the save action is finished
Toast.makeText(getApplicationContext(), "Saved Successfully!",
Toast.LENGTH_SHORT).show();
}
public void onDeleteClick(View v) {
EditText editText1 = (EditText) findViewById(R.id.editText1);
EditText editText2 = (EditText) findViewById(R.id.editText2);
EditText editText3 = (EditText) findViewById(R.id.editText3);
EditText editText4 = (EditText) findViewById(R.id.editText4);
EditText editText5 = (EditText) findViewById(R.id.editText5);
EditText D = null;
if (editText1.isFocused() == true)
D = editText1;
if (editText2.isFocused() == true)
D = editText2;
if (editText3.isFocused() == true)
D = editText3;
if (editText4.isFocused() == true)
D = editText4;
if (editText5.isFocused() == true)
D = editText5;
D.setText("");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
<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:background="@drawable/lisaback"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/app_label"
android:textSize="16sp"
android:textStyle="italic"
android:typeface="serif" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="33dp"
android:layout_marginLeft="34dp"
android:text="@string/current_date"
android:textColor="@color/dark"
android:textStyle="italic"
android:typeface="serif" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView2"
android:layout_centerHorizontal="true"
android:background="@android:color/transparent"
android:onClick="onSaveClick"
android:text="@string/save"
android:textColor="@color/green"
android:textStyle="italic"
android:typeface="serif" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/editText5"
android:layout_marginTop="43dp"
android:textColor="@color/dark"
android:textStyle="italic"
android:typeface="serif" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/button1"
android:background="@android:color/transparent"
android:text="@string/delete"
android:onClick="onDeleteClick"/>
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/button2"
android:layout_marginTop="18dp"
android:ems="10"
android:hint="@string/task1"
android:inputType="textMultiLine" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1"
android:ems="10"
android:hint="@string/task2"
android:inputType="textMultiLine" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText2"
android:ems="10"
android:hint="@string/task3"
android:inputType="textMultiLine" />
<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText3"
android:ems="10"
android:hint="@string/task4"
android:inputType="textMultiLine" />
<EditText
android:id="@+id/editText5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText4"
android:ems="10"
android:hint="@string/task5"
android:inputType="textMultiLine" />
</RelativeLayout>
2014.5.1
将内容序列化存储到xml文件中
XmlSerializer serializer = Xml.newSerializer(); // 由android.util.Xml创建一个XmlSerializer实例
DataOutputStream out = new DataOutputStream(new FileOutputStream(m));
serializer.setOutput(out, "UTF-8"); // 设置输出方向为out
serializer.startDocument("UTF-8", true);
serializer.startTag("", "TaskList");
serializer.startTag("", "Task");
serializer.attribute("", "id", 1 + "");
serializer.text(s1);
serializer.endTag("", "Task");
serializer.endTag("", "TaskList");
serializer.endDocument();
out.close();
2014.5.11
关于lisa的设想有很多,不过我发现更换背景功能室比较贴近现实需要的,先把这个实现了再说。
2014.7.26
lisa定位为简便、快捷、无广告的免费移动记事/笔记软件。
2014.8.2
lisa是作为一个记事本呢,还是一个日记本。如果是记事,文字简短,输入要快,保存后可能还要经常修改,背景以纯色为佳。如果是日记,文字较长,输入时间充裕,保存后一般不再修改,背景要赏心悦目,有保密需求,有云存储需求,有导出需求。市面上记事本较多,记事本功能简洁,而日记本较少,门槛较高。
文字长度 | 输入时间 | 要修改吗 | 背景 | 其他需求 | 市场现状 | |
记事本 | 0-40 | 快 | 有时候要 | 纯色 | 没有 | 多 |
日记本 | 0-400 | 慢 | 一般不要 | 图片 | 保密,云存储,导出 | 少 |
2014.8.12
lisa下载量突破70了,91+安卓市场,lisa更名为Lisa随手记。版本1.4,百度平台还是给力些,应用宝卡在审核环节不动了。希望能有些评论或评分~。
下载地址:http://apk.hiapk.com/appinfo/lisa.i
2014.8.27
有以下工作要做:
1.手机端发送文件到PC端功能,即联网功能
2.保密记录显示问题
3.万能建长按
2014.8.29
ListView是手机上常用的控件,能够表现表格、列表的形式,与java中的ArrayList是很好的搭档。listview是一个viewgroup,将一组textview打包成列表。
2014.9.7
android获取ip有多种场景,wifi和GRPS不同,参考下文
<div class="panel">
<form method="post" enctype="text/plain">
<textarea name ="new" id="edittext" cols=80 rows=8></textarea>
<br> <input id="add" type="submit" value="确定" />
</form>
</div>
请求 POST / HTTP/1.1
Accept text/html, application/xhtml+xml, */*
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0; QQBrowser/7.7.26717.400) like Gecko
Referer http://192.168.1.101:9999/
Accept-Language zh-Hans-CN,zh-Hans;q=0.5
Content-Type text/plain
Accept-Encoding gzip, deflate
Host 192.168.1.101:9999
Content-Length 12
Connection Keep-Alive
Cache-Control no-cache
String s=URLDecoder.decode(EntityUtils.toString(inentity), "utf-8");
httpcore没有提供相应的方法,至少我目前没看到。可以用java.net库提供的方法 String java. net. URLDecoder.decode( String s, String encoding) throws UnsupportedEncodingException。
All HttpCore components potentially throw two types of exceptions: IOException
in case of an I/O failure such as socket timeout or an socket reset andHttpException
that signals an HTTP failure such as a violation of the HTTP protocol. Usually I/O errors are considered non-fatal and recoverable, whereas HTTP protocol errors are considered fatal and cannot be automatically recovered from.