在网站上看了很多人都说过textview显示内容,要加书签效果,但是都没有具体的例子,因为项目中用到了,所以按自己的想法写了一个。很简单不过效果也还不错。好的直接上代码,要运行的话可直接在sd卡路径下加a.txt文件就可以正常运行了
package ;
import java.io.FileInputStream;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
public class TextViewTestActivity extends Activity {
private TextView tv;
private ScrollView sv;
private Button btn;
public static final String SDCARD_PATH = Environment
.getExternalStorageDirectory() + "/" + "a.txt";
private int w = 0, h = 0;
private SharedPreferences sp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
sv = (ScrollView) findViewById(R.id.sv);
btn = (Button) findViewById(R.id.btn);
tv.setText(readTxt());
sp = TextViewTestActivity.this.getSharedPreferences("remberLocation",
MODE_WORLD_READABLE);
w = sp.getInt("scrollx", 100);
h = sp.getInt("scrolly", 100);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Editor edit = sp.edit();
edit.putInt("scrollx", sv.getScrollX());
edit.putInt("scrolly", sv.getScrollY());
mit();
}
});
sv.post(mScrollView);
}
private Runnable mScrollView = new Runnable() {
@Override
public void run() {
if (w == 100 && h == 100) {
} else {
sv.scrollTo(w, h);
Toast.makeText(TextViewTestActivity.this, w + "--" + h, 1)
.show();
}
}
};
public String readTxt() {
String res = "";
try {
FileInputStream fin = new FileInputStream(SDCARD_PATH);
int length = fin.available();
byte[] buffer = new byte[length];
fin.read(buffer);
res = EncodingUtils.getString(buffer, "gbk");
fin.close();// 关闭资源
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
}
需要注意的是 scrollTo 调用该方法不能放在oncareate里面 需要用post 放到线程即可。需要保证数据加载好然后执行此方法。