标签:发微博
先上效果图:
先看页面布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@android:color/white" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:background="#f4f4f4" > <LinearLayout android:id="@+id/btns_bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal"> <LinearLayout <strong> //这5个是底部的按钮</strong> android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <ImageButton android:src="@drawable/btn_insert_save" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bg_btn" android:visibility="gone" /> <ImageButton android:id="@+id/ib_insert_location" android:src="@drawable/btn_insert_location" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bg_btn"/> <ImageButton android:id="@+id/ib_insert_pic" android:src="@drawable/btn_insert_pic" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bg_btn"/> <ImageButton android:id="@+id/ib_insert_topic" android:src="@drawable/btn_insert_talk" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bg_btn"/> <ImageButton android:id="@+id/ib_insert_at" android:src="@drawable/btn_insert_at" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bg_btn"/> <ImageButton android:id="@+id/ib_face_keyboard" android:src="@drawable/btn_insert_face" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/bg_btn"/> </LinearLayout> </LinearLayout> <RelativeLayout <strong> //这一个包括缩略图和location</strong> android:id="@+id/marks" android:layout_width="fill_parent" android:layout_height="50dp" android:padding="3dp" android:layout_above="@id/btns_bottom" > <ImageView android:id="@+id/iv_insertpic" android:scaleType="centerCrop" android:layout_width="50dp" android:layout_height="fill_parent" android:visibility="gone" /> <ImageView android:id="@+id/iv_location" android:src="@drawable/icon_insertlocation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="15dp" android:layout_toRightOf="@id/iv_insertpic" android:visibility="gone"/> <ProgressBar android:id="@+id/pg_loadlocation" style="@android:style/Widget.ProgressBar.Small.Inverse" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="15dp" android:layout_toRightOf="@id/iv_insertpic" android:visibility="gone" /> <LinearLayout android:id="@+id/ll_text_limit_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:gravity="center" android:background="@drawable/bg_delwords" android:focusable="true" android:clickable="true" android:layout_alignParentBottom="false"> <TextView android:id="@+id/tv_text_limit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="140" android:layout_marginRight="5px" android:textColor="#333"/> <ImageView android:src="@drawable/icon_delwords" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout> <EditText<strong> //这个是正文</strong> android:id="@+id/et_mblog" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/marks" android:background="@null" android:capitalize="sentences" android:imeOptions="actionDone" android:gravity="top|left" android:layout_margin="3px" /> </RelativeLayout> <strong>//这个在最外层,整个界面的底部,是表情的界面,用gridview来实现</strong> <com.example.weibotest.view.EmotionView android:id="@+id/emotion_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /> </LinearLayout>
首先看从手机相册里load image:
private void startToMediaActivity() {
startActivityForResult(new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI),
WriteBlog.REQUEST_CODE_GALLERY);
}
private void startToCameraActivity() {
if (FileUtils.isSdCardAvailable()) {
final Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
final Uri picUri = Uri.fromFile(sdcardTempFile);
i.putExtra(MediaStore.EXTRA_OUTPUT, picUri);
startActivityForResult(i, WriteBlog.REQUEST_CODE_CAMERA);
}
else {
Toast.makeText(this, R.string.pls_insert_sdcard, Toast.LENGTH_SHORT)
.show();
}
}
一个Image的处理类:
final class ImageLoadingHelper {
private File picfile;
private WriteBlog activity;
private String defaultTempPath;
private String defaultDraftPath;
Bitmap createThumbnail() {
Options thumbnailOpts = new BitmapFactory.Options();
if (!hasBitmap()) { throw new IllegalStateException("There is no pic!"); }
return BitmapFactory.decodeFile(getTempPath(),
thumbnailOpts);
}
synchronized boolean hasBitmap() {
String picfileName = picfile.getName();
if(picfileName.matches(".avi")|| picfileName.matches(".rm")||picfileName.matches(".mp4")
||picfileName.matches(".rmvb")||picfileName.matches(".wmv")||picfileName.matches(".flv"))
{
return false;
}
else{
return FileUtils.doesExisted(picfile);
}
}
synchronized void importBitmapFile(Uri uri) {
if (uri.getScheme().equals("content")) {
InputStream inputStream = null;
try {
inputStream = activity.getContentResolver()
.openInputStream(uri);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FileUtils.file_put_contents(inputStream,picfile);
}
}
boolean doesDraftExist() {
return FileUtils.doesExisted(defaultDraftPath);
}
String getTempPath() {
return picfile == null ? "" : picfile.getAbsolutePath();
}
void loadDraft() {
FileUtils.copy(defaultDraftPath, defaultTempPath);
activity.displayInsertBitmap();
}
void saveDraft() {
FileUtils.copy(defaultTempPath, defaultDraftPath);
}
ImageLoadingHelper(WriteBlog activity) {
this.activity = activity;
if (FileUtils.isSdCardAvailable()) {
defaultTempPath = FileUtils.getSDPath() + "/temp/"
+ System.currentTimeMillis() + ".jpg";
}
else {
defaultTempPath = activity.getFilesDir().getAbsolutePath()
+ "/pic/" + System.currentTimeMillis() + ".jpg";
}
defaultDraftPath = activity.getFilesDir().getAbsolutePath()
+ "/draft/bitmap_temp.jpg";
if (FileUtils.doesExisted(defaultTempPath)) {
defaultTempPath.replace(".jpg", "(1).jpg");
}
picfile = new File(defaultTempPath);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == WriteBlog.REQUEST_CODE_CAMERA)
|| (WriteBlog.REQUEST_CODE_GALLERY == requestCode)) {
if (resultCode != Activity.RESULT_OK) { return; }
Uri uri = null;
if ((requestCode == WriteBlog.REQUEST_CODE_CAMERA)
&& FileUtils.doesExisted(sdcardTempFile)) {
uri = Uri.fromFile(sdcardTempFile);
}
else if (WriteBlog.REQUEST_CODE_GALLERY == requestCode) {
uri = data.getData();
}
if (uri != null) {
displayImageUri(uri);
}
}
}
private void displayImageUri(Uri uri) {
mImageLoadingHelper.importBitmapFile(uri);
displayInsertBitmap();
}
void displayInsertBitmap() {
insertPicView.setImageBitmap(mImageLoadingHelper
.createThumbnail());
insertPicView.setVisibility(View.VISIBLE);
}如何写一个发微博的页面(包括插入图片,插入表情,插入话题,插入Location) (一),布布扣,bubuko.com
如何写一个发微博的页面(包括插入图片,插入表情,插入话题,插入Location) (一)
标签:发微博
原文地址:http://blog.csdn.net/baidu_nod/article/details/38355279