Android 学习实例 Note

来源:互联网 发布:淘宝为什么得2张银行卡 编辑:程序博客网 时间:2024/05/24 15:37
</pre><wbr><span style="font-size:18px;">      身为一个软件工程的学生,每个学期都要做一个课程设计,本次学期的课程设计就是做一个简单的Android实例。因为怕麻饭就选了最最最最简单的笔记本儿了,不记得是哪位说了?所有学Android的第一个就是笔记本儿~哎哎。   噗。。。你怎么废话那么多!!! 。。。----------------------------------我是正经的分割线--------------------------------------------------------------------------------</span><strong><span style="font-size:24px;">目录1,功能介绍2,UI设计3,类图4,代码实现</span></strong><span style="font-size:18px;">----------------------------------我是目录的分割线--------------------------------------------------------------------------------<strong>1,功能介绍</strong>1.1 密码功能 包括:登录输入,设置密码,修改密码,删除密码1.2 文本功能 可以增加一篇文本,修改文本,删除文本,插入图片,删除图片1.3  数据库  对数据库进行操作 包括</span><span style="font-size:18px;"><span style="font-size:18px;">----------------------------------我是无聊的分割线--------------------------------------------------------------------------------</span><strong>2,UI设计</strong></span><div align="center"><span style="font-size:18px;"><span style="font-size:18px;">登录界面</span></span></div><div align="center"><div><img title="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" alt="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" src="http://img1.ph.126.net/fuSN2zw-NdKfykjmAEM4MA==/4909486543888150783.png" style="margin:0 10px 0 0" /></div> </div><div align="center"><span style="font-size:18px;"><span style="font-size:18px;">密码操作界面</span></span></div><div align="center"><div><img title="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" alt="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" src="http://img2.ph.126.net/EaQztFhAWLAFWdGh8Scnjw==/1626925365490718147.png" style="margin:0 10px 0 0" /></div><span style="font-size:18px;"><span style="font-size:18px;">主界面</span></span></div><div align="center"><div><img title="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" alt="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" src="http://img0.ph.126.net/ed7noxlsh6Ky_DRLDB5r3w==/1156862154382548738.png" style="margin:0 10px 0 0" /></div> </div><div align="center"><span style="font-size:18px;"><span style="font-size:18px;">编辑界面</span></span></div><div align="center"><div><img title="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" alt="【Android实例】TimeLinessNotes笔记本 - m18874489115 - Rindia的干活区" src="http://img1.ph.126.net/2HRv-B8jdKpW9f7RI9JCnQ==/6631555948861649296.png" style="margin:0 10px 0 0" /></div> </div><span style="font-size:18px;"></span><span style="font-size:18px;"><span style="font-size:18px;">----------------------------------我是讨厌的分割线--------------------------------------------------------------------------------3.类图</span></span><span style="font-size:18px;"><span style="font-size:18px;">----------------------------------我是(QAQ)的分割线--------------------------------------------------------------------------4.代码实现4.1.1 登录界面XML</span></span><pre name="code" class="html"></pre><pre name="code" class="html"><pre name="code" class="html"><LinearLayout 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/bg_sky"    android:orientation="vertical"    tools:context="${relativePackage}.${activityClass}" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_weight="1" >        <LinearLayout            android:id="@+id/ly"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:gravity="center"            android:orientation="horizontal" >            <TextView                android:id="@+id/textView2"                android:layout_width="70dp"                android:layout_height="wrap_content"                android:gravity="bottom"                   android:background="@drawable/tv_password" />            <EditText                android:id="@+id/ed_password"                android:layout_width="150dp"                android:layout_height="wrap_content"                android:gravity="top|left"                android:ems="10"                android:inputType="textPassword"                android:background="@drawable/edv_line" />        </LinearLayout>        <com.wl.android.myeditView.MyImageView            android:id="@+id/img_user"            android:layout_width="110dp"            android:layout_height="110dp"            android:layout_above="@id/ly"            android:layout_centerHorizontal="true"            android:layout_marginBottom="20dp"            android:src="@color/grayPuples" />     <com.wl.android.myeditView.MyImageView            android:id="@+id/anmitor"            android:layout_width="110dp"            android:layout_height="110dp"            android:layout_above="@id/ly"            android:layout_centerHorizontal="true"            android:layout_marginBottom="20dp"            android:src="@drawable/img_user_login" />            <TextView        android:id="@+id/tv_frogivelogin"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="right"        android:layout_alignParentBottom="true"        android:layout_marginBottom="10dp"        android:layout_marginRight="10dp"        android:text="忘记密码?"        android:textColor="@drawable/move_btn"        android:textSize="20dp" />    </RelativeLayout>   </LinearLayout>


4.1.2  主界面XML
<pre name="code" class="html"><LinearLayout 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/bg_green_02"    android:orientation="vertical" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="70dp"        android:background="@color/grayGreen_alph70" >        <Button            android:id="@+id/btn_menu"            android:layout_width="60dp"            android:layout_height="match_parent"            android:layout_alignParentLeft="true"            android:background="@color/nocolor"            android:text="菜单"            android:textColor="@drawable/move_btn_menu"            android:textSize="20dp" />        <TextView            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_centerInParent="true"            android:gravity="center_vertical"            android:text="TimelineNote"            android:textColor="@color/white"            android:textSize="25dp" />        <Button            android:id="@+id/btn_add"            android:layout_width="60dp"            android:layout_height="match_parent"            android:layout_alignParentRight="true"            android:background="@color/nocolor"            android:text="新增"            android:textColor="@drawable/move_btn_menu"            android:textSize="20dp" />    </RelativeLayout>    <ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:dividerHeight="0dp" /></LinearLayout>

4.1.3 密码界面XML

<?xml version="1.0" encoding="utf-8"?>//顶部栏 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/bg_flower"    android:orientation="vertical" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="60dp"        android:layout_gravity="top"        android:background="@color/blue_light" >        <Button            android:id="@+id/btn_resist_cancle"            android:layout_width="50dp"            android:layout_height="match_parent"            android:layout_alignParentLeft="true"            android:background="@color/nocolor"            android:text="返回"            android:textColor="@color/blue_nature"            android:textSize="20dp" />        <TextView            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_centerInParent="true"            android:gravity="center_vertical"            android:text="设置密码"            android:textColor="@color/blue_nature"            android:textSize="20dp" />    </RelativeLayout> <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:gravity="center"        android:orientation="vertical" >//设置密码时显示的内容 <LinearLayout        android:id="@+id/ly_set_password"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:visibility="gone"        android:orientation="vertical" >        <TextView            android:layout_width="230dp"            android:layout_height="30dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:text="密码"            android:textColor="@color/blue_nature"            android:textSize="20dp" />        <EditText            android:id="@+id/resist_password"            android:layout_width="230dp"            android:layout_height="40dp"            android:layout_marginTop="10dp"            android:background="@color/blue_light" />        <TextView            android:layout_width="230dp"            android:layout_height="30dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:text="密保问题"            android:textColor="@color/blue_nature"            android:textSize="20dp" />        <EditText            android:id="@+id/resist_question"            android:layout_width="230dp"            android:layout_height="40dp"            android:layout_marginTop="10dp"            android:background="@color/blue_light" />        <TextView            android:layout_width="230dp"            android:layout_height="30dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:text="答案"            android:textColor="@color/blue_nature"            android:textSize="20dp" />        <EditText            android:id="@+id/resist_answer"            android:layout_width="230dp"            android:layout_height="40dp"            android:layout_marginTop="10dp"            android:background="@color/blue_light" />    </LinearLayout>//修改密码 和 删除密码时显示的内容    <LinearLayout        android:id="@+id/ly_ensure_password"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:visibility="gone"        android:orientation="vertical" > <TextView            android:layout_width="230dp"            android:layout_height="30dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:text="请输入密码"            android:textColor="@color/blue_nature"            android:textSize="20dp" />        <EditText            android:id="@+id/edt_ensure_password"            android:layout_width="230dp"            android:layout_height="40dp"            android:layout_marginTop="10dp"            android:password="true"            android:background="@color/blue_light" />        <TextView            android:id="@+id/tv_forgive"            android:layout_width="230dp"            android:layout_height="30dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:text="忘记密码?"            android:textColor="@drawable/move_btn"            android:textSize="20dp" />    </LinearLayout>//忘记密码是显示的内容    <LinearLayout        android:id="@+id/ly_answerquestion"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:visibility="gone"        android:orientation="vertical" >        <TextView            android:id="@+id/tv_answer_question"            android:layout_width="230dp"            android:layout_height="30dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:text="what is your name?"            android:textColor="@color/blue_nature"            android:textSize="20dp" />        <EditText            android:id="@+id/ed_answer_question"            android:layout_width="230dp"            android:layout_height="40dp"            android:layout_marginTop="10dp"            android:background="@color/blue_light" />    </LinearLayout><Button    android:id="@+id/btn_ensure"    android:layout_width="100dp"     android:layout_height="30dp"     android:layout_marginTop="5dp"     android:text="下一步"     android:gravity="center"     android:textColor="@color/blue_nature"     android:background="@color/blue_light" /></LinearLayout></LinearLayout>

4.1.4 编辑界面XML

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/bg_plante"    android:orientation="vertical" >    <RelativeLayout        android:id="@+id/edit"        android:layout_width="match_parent"        android:layout_height="60dp"        android:background="@color/grayBlown_alph70" >        <Button            android:id="@+id/back"            android:layout_width="60dp"            android:layout_height="match_parent"            android:layout_alignParentLeft="true"            android:background="@color/nocolor"            android:text="取消"            android:textColor="@drawable/cancle_btn_x"            android:textSize="20dp" />        <TextView            android:id="@+id/showdate"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_centerInParent="true"            android:gravity="center"            android:text="2016/5/23"            android:textColor="@color/white"            android:textSize="25dp" />        <Button            android:id="@+id/ok"            android:layout_width="60dp"            android:layout_height="match_parent"            android:layout_alignParentRight="true"            android:background="@color/nocolor"            android:text="保存"            android:textColor="@drawable/cancle_btn_x"            android:textSize="20dp" />    </RelativeLayout>//文本编辑区    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_margin="20dp"        android:layout_weight="1"        android:orientation="vertical" >        <com.wl.android.myeditView.MyEditView            android:id="@+id/edittitle"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginLeft="30dp"            android:layout_marginRight="30dp"            android:padding="10dp"            android:singleLine="true"            android:textColor="@color/grayBlown_press"            android:textSize="30dp" />        <com.wl.android.myeditView.MyEditView            android:id="@+id/editcontent"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_marginTop="20dp"            android:background="@color/nocolor"            android:ems="10"            android:gravity="top"            android:padding="10dp"            android:textColor="@color/grayBlown_press"            android:textSize="30dp" >            <requestFocus />        </com.wl.android.myeditView.MyEditView>    </LinearLayout>//图片增加区    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="@color/white" >        <Button            android:id="@+id/addpicture"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:layout_marginTop="3dp"            android:background="@drawable/img_view_top"            android:gravity="center" />    </RelativeLayout>    <RelativeLayout        android:id="@+id/imagewindow"        android:layout_width="match_parent"        android:layout_height="200dp"        android:background="@drawable/img_view"        android:orientation="vertical"        android:visibility="gone" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_alignParentTop="true"            android:orientation="horizontal" >            <ImageView                android:id="@+id/imageView0"                android:layout_width="match_parent"                android:layout_height="94dp"                android:layout_margin="3dp"                android:layout_weight="1"                android:scaleType="fitCenter"                android:src="@drawable/img_add_x" />            <ImageView                android:id="@+id/imageView1"                android:layout_width="match_parent"                android:layout_height="94dp"                android:layout_margin="3dp"                android:layout_weight="1"                android:scaleType="fitCenter"                android:src="@drawable/img_add_x" />        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:orientation="horizontal" >            <ImageView                android:id="@+id/imageView2"                android:layout_width="match_parent"                android:layout_height="94dp"                android:layout_margin="3dp"                android:layout_weight="1"                android:scaleType="fitCenter"                android:src="@drawable/img_add_x" />            <ImageView                android:id="@+id/imageView3"                android:layout_width="match_parent"                android:layout_height="94dp"                android:layout_margin="3dp"                android:layout_weight="1"                android:scaleType="fitCenter"                android:src="@drawable/img_add_x" />        </LinearLayout>    </RelativeLayout></LinearLayout>

4.2.1 LoginActivity

package com.example.timelinenote;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.database.Cursor;import android.graphics.drawable.Animatable;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.AnimationUtils;import android.view.animation.CycleInterpolator;import android.view.animation.ScaleAnimation;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.wl.android.DateSQLite.DateSQlite;import com.wl.android.animation.MyAnimation;public class LoginActivity extends Activity implements OnClickListener{//判断输入密码的正确与误时进行的操作Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO 自动生成的方法存根super.handleMessage(msg);if (1 == msg.what) {Toast.makeText(LoginActivity.this, "登录成功!",Toast.LENGTH_SHORT).show();Intent intent = new Intent(LoginActivity.this, IndexActivity.class);LoginActivity.this.startActivity(intent);LoginActivity.this.finish();}else if (2 == msg.what) {Toast.makeText(LoginActivity.this, "请重新登录!",Toast.LENGTH_SHORT).show();miv_user.startAnimation(mAnimation.ButtonClickClose());new Timer().schedule(new TimerTask() {@Overridepublic void run() {// TODO 自动生成的方法存根handler.sendEmptyMessage(3);}}, 1000);}else if (3 == msg.what) {miv_user.startAnimation(mAnimation.setAnimationSet());}}};DateSQlite mSQL;String mstrPassword;ImageView miv_user;MyAnimation mAnimation;TextView mtv_forget;protected void onCreate(Bundle savedInstanceState) {// TODO 自动生成的方法存根super.onCreate(savedInstanceState);setContentView(R.layout.login);mSQL = new DateSQlite(this);//获得数据库中的密码try {Cursor cursor = mSQL.getInformation();cursor.moveToFirst();mstrPassword = cursor.getString(mSQL.KEY);System.out.println(mstrPassword);cursor.close();} catch (Exception e) {// TODO: handle exceptionSystem.out.println("无密码或密码获取错误"); mstrPassword = "0";}mAnimation = new MyAnimation();miv_user = (ImageView) findViewById(R.id.img_user);mtv_forget = (TextView) findViewById(R.id.tv_frogivelogin);mtv_forget.setOnClickListener(this);miv_user.setOnClickListener(this);                        //给头像增加动画                       miv_user.setAnimation(mAnimation.setAnimationSet());} @Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.img_user:miv_user.startAnimation(mAnimation.ButtonClickOpen());new Timer().schedule(new TimerTask() {@Overridepublic void run() {// TODO 自动生成的方法存根logIn();}}, 1500);break;case R.id.tv_frogivelogin:Intent intent = new Intent(LoginActivity.this, ResistitActivity.class);intent.putExtra("type", "4");LoginActivity.this.startActivity(intent);default:break;}}//判断密码输入是否正确public void logIn() {new Thread(){public void run() {String strPassword = ((EditText)findViewById(R.id.ed_password)).getText().toString();                                                      if ((!mstrPassword.equals("0")) && strPassword.equals(mstrPassword)) {//有密码的情况且正确handler.sendEmptyMessage(1);}else if (mstrPassword.equals("0")) {//没有密码的情况handler.sendEmptyMessage(1);}else {handler.sendEmptyMessage(2);//有密码但错误}};}.start();}}


4.2.2 IndexActivity

package com.example.timelinenote;import java.util.ArrayList;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Typeface;import android.os.Bundle;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.Button;import android.widget.ListView;import android.widget.PopupMenu;import android.widget.PopupMenu.OnMenuItemClickListener;import com.wl.android.DateSQLite.DateSQlite;import com.wl.android.enpty.Logs;import com.wl.android.myadapter.Myadapter;public class IndexActivity extends Activity implements OnClickListener,OnItemClickListener,OnItemLongClickListener{private ListView mlistview;ArrayList<Logs> mlistLogs = new ArrayList<Logs>();final int HEADER_CODE = 1;DateSQlite mSQL;android.widget.PopupMenu mpopupMenu = null;Button mbtnMenu;Typeface mTypeface_HM;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_index);                mTypeface_HM = Typeface.createFromAsset(getAssets(), "fonts/Hym.ttf");//设置字体        mlistview = (ListView) findViewById(R.id.listview);        View ListViewHeader = View.inflate(this, R.layout.listview_header, null);        mlistview.addHeaderView(ListViewHeader);        Button addbButton = (Button) findViewById(R.id.btn_add);        mbtnMenu = (Button) findViewById(R.id.btn_menu);        mSQL = new DateSQlite(this);initDatas();        addbButton.setOnClickListener(this);        mlistview.setOnItemClickListener(this);        mlistview.setOnItemLongClickListener(this);        mbtnMenu.setOnClickListener(this);        try {//从数据库中获得内容mlistLogs = mSQL.getLogs();initDatas();} catch (Exception e) {// TODO: handle exception}    }    //往listView中填充内容    private void initDatas() {// TODO 自动生成的方法存根        Myadapter myadapter = new Myadapter(mlistLogs, this);        mlistview.setAdapter(myadapter);}@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    // TODO 自动生成的方法存根    super.onActivityResult(requestCode, resultCode, data);    //对EditView中传递的内容进行操作    if (0 == resultCode) {    Bundle bundle = data.getExtras();    Logs dateLogs = (Logs) (bundle.get("Logs"));    Boolean isedit = data.getExtras().getBoolean("isedit");    int position = data.getExtras().getInt("position");    if (isedit) {    mlistLogs.remove(position - HEADER_CODE);    mlistLogs.add(position - HEADER_CODE,dateLogs);    }else {    //listview 增加  header 之后产生的1个位子的位移    mlistLogs.add(0,dateLogs);    }}initDatas();    }@Overrideprotected void onPause() {// TODO 自动生成的方法存根super.onPause();mSQL.insertLogs(mlistLogs);}             //点击listViewItem时的反应        @Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// TODO 自动生成的方法存根if (0 != position) {Intent intent = new Intent(IndexActivity.this, EditActivity.class);intent.putExtra("isadd", false);//通知EditActivity不是增加内容intent.putExtra("position", position);intent.putExtra("Logs", mlistLogs.get(position - HEADER_CODE));//这个减去Header_code是为了防止点击listView的HeaderstartActivityForResult(intent, 0);}}      //顶部栏按钮的监听事件@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_add:Intent intent = new Intent();    intent.setClass(IndexActivity.this, EditActivity.class);    IndexActivity.this.startActivityForResult(intent, 0);    overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);//Activity跳转的动画break;case R.id.btn_menu:PopupMenu(mbtnMenu);default:break;}}                //长按删除日志@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {AlertDialog.Builder deleteBuilder = new AlertDialog.Builder(this);deleteBuilder.setMessage("你确定删除这篇日记吗?");final int KEY = position - HEADER_CODE;deleteBuilder.setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mSQL.deleteLog(mlistLogs.get(KEY));mlistLogs.remove(KEY);initDatas();}});deleteBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO 自动生成的方法存根}});deleteBuilder.create();deleteBuilder.show();return true;}   //设置密码的菜单public void PopupMenu(View button){mpopupMenu = new PopupMenu(this, button);getMenuInflater().inflate(R.menu.menu, mpopupMenu.getMenu());mpopupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {Intent intent = new Intent(IndexActivity.this, ResistitActivity.class);switch (item.getItemId()) {case R.id.menu_im_setPassword:intent.putExtra("type", "1");IndexActivity.this.startActivity(intent);break;case R.id.menu_im_alterPassword:intent.putExtra("type", "2");IndexActivity.this.startActivity(intent);break;case R.id.menu_im_deletePassword:intent.putExtra("type", "3");IndexActivity.this.startActivity(intent);break;default:break;}return false;}});mpopupMenu.show();}}


4.2.3 ResistActivity

package com.example.timelinenote;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import com.wl.android.DateSQLite.DateSQlite;public class ResistitActivity extends Activity implements OnClickListener {DateSQlite db;EditText resistPassword;EditText resisqustion;EditText resistanswer;LinearLayout ly_ensure_mPassword;LinearLayout ly_set_mPassword;LinearLayout ly_answer_mQuestion;private String mPassword;private String mQuestion;private String mKey;protected void onCreate(Bundle savedInstanceState) {// TODO 自动生成的方法存根super.onCreate(savedInstanceState);setContentView(R.layout.resist);ly_ensure_mPassword = (LinearLayout) findViewById(R.id.ly_ensure_password);ly_answer_mQuestion = (LinearLayout) findViewById(R.id.ly_answerquestion);ly_set_mPassword = (LinearLayout) findViewById(R.id.ly_set_password);resistPassword = (EditText) findViewById(R.id.resist_password);resisqustion = (EditText) findViewById(R.id.resist_question);resistanswer = (EditText) findViewById(R.id.resist_answer);findViewById(R.id.btn_resist_cancle).setOnClickListener(this);db = new DateSQlite(this);Intent intent = getIntent();String typeString = intent.getStringExtra("type");try {Cursor cursor = db.getInformation();cursor.moveToFirst();  mPassword = cursor.getString(db.PASSWORD);  mQuestion = cursor.getString(db.QUESTION);  mKey = cursor.getString(db.KEY);} catch (Exception e) {// TODO: handle exceptionmPassword = "0";mQuestion = "0";mKey = "0";}if (typeString.equals("1")) {if (mPassword.equals("0")) {setPassword();}else {Toast.makeText(ResistitActivity.this, "密码已经设置了哦!", Toast.LENGTH_LONG).show();}} else if (typeString.equals("2")) {alterPassword();} else if (typeString.equals("3")) {deletePassword();}else {FogivePassword();}}private void deletePassword() {// TODO 自动生成的方法存根ly_ensure_mPassword.setVisibility(View.VISIBLE);TextView tv_answer = (TextView) findViewById(R.id.tv_forgive);tv_answer.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根FogivePassword();ly_ensure_mPassword.setVisibility(View.GONE);return;}});Button btn_ensure = (Button) findViewById(R.id.btn_ensure);btn_ensure.setOnClickListener( new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根EditText edt_ensur = (EditText) findViewById(R.id.edt_ensure_password);final String ed_mPassword = edt_ensur.getText().toString();if (ed_mPassword.equals(mPassword)) {db.deleteUser();Toast.makeText(ResistitActivity.this, "密码删除成功", Toast.LENGTH_LONG).show();findViewById(R.id.ly_ensure_password).setVisibility(View.GONE);}else {Toast.makeText(ResistitActivity.this, "密码错误", Toast.LENGTH_LONG).show();}}});}private void alterPassword() {// TODO 自动生成的方法存根ly_ensure_mPassword.setVisibility(View.VISIBLE);TextView tv_answer = (TextView) findViewById(R.id.tv_forgive);tv_answer.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根FogivePassword();ly_ensure_mPassword.setVisibility(View.GONE);return;}});Button btn_ensure = (Button) findViewById(R.id.btn_ensure);btn_ensure.setOnClickListener( new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根EditText edt_ensur = (EditText) findViewById(R.id.edt_ensure_password);String ed_mPassword = edt_ensur.getText().toString();if (ed_mPassword.equals(mPassword)) {setPassword();ly_ensure_mPassword.setVisibility(View.GONE);}else {Toast.makeText(ResistitActivity.this, "密码错误", Toast.LENGTH_LONG).show();}}});}private void setPassword() {ly_set_mPassword.setVisibility(View.VISIBLE);Button btn_ensure = (Button) findViewById(R.id.btn_ensure);btn_ensure.setText("确定");btn_ensure.setOnClickListener( new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根risistmPassword();Toast.makeText(ResistitActivity.this, "密码设置成功", Toast.LENGTH_LONG).show();ResistitActivity.this.finish();}});}private void FogivePassword(){ly_answer_mQuestion.setVisibility(View.VISIBLE);TextView tv_qusetion = (TextView) findViewById(R.id.tv_answer_question);tv_qusetion.setText(mQuestion);Button btn_ensure = (Button) findViewById(R.id.btn_ensure);btn_ensure.setOnClickListener( new OnClickListener() {@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根EditText ed_answer = (EditText) findViewById(R.id.ed_answer_question);String answersString = ed_answer.getText().toString();if (answersString.equals(mKey)) {Toast.makeText(ResistitActivity.this, "恭喜回答正确", Toast.LENGTH_LONG).show();ly_answer_mQuestion.setVisibility(View.GONE);setPassword();}else {Toast.makeText(ResistitActivity.this, "回答错误呢!", Toast.LENGTH_LONG).show();}}});}private Boolean getInf() {try {Cursor cursor = db.getInformation();cursor.moveToFirst();mPassword = cursor.getString(db.KEY);mQuestion = cursor.getString(db.QUESTION);mKey = cursor.getString(db.KEY);cursor.close();} catch (Exception e) {// TODO: handle exceptionSystem.out.println("无密码或密码获取错误");return false;}return true;}@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根switch (v.getId()) {case R.id.btn_resist_cancle:this.finish();default:break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO 自动生成的方法存根super.onActivityResult(requestCode, resultCode, data);}private boolean risistmPassword() {// TODO 自动生成的方法存根String mPassword = resistPassword.getText().toString();String mQuestion = resisqustion.getText().toString();String mKey = resistanswer.getText().toString();db.insertInformation(mPassword, mQuestion, mKey);return true;}}


4.2.4 EditActivity

package com.example.timelinenote;import java.sql.Date;import java.text.SimpleDateFormat;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Typeface;import android.os.Bundle;import android.text.style.TypefaceSpan;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnLongClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.Toast;import com.wl.android.DateSQLite.DateSQlite;import com.wl.android.enpty.GetPictureFormCAMER;import com.wl.android.enpty.Logs;import com.wl.android.myeditView.MyEditView;public class EditActivity extends Activity implements OnClickListener,OnTouchListener, OnLongClickListener {Logs mLogs;MyEditView medt_title;MyEditView medt_content;Button mbtn_back;Button mbtn_right;Button mbtn_addPicture;String mstrTitle;String mstrContent;String mstrDate;TextView mtv_showDate;String[] mstrImgList = { "0", "0", "0", "0" };RelativeLayout mRL_imgGroup;GetPictureFormCAMER mGetPicture;int[] mintImgId = { R.id.imageView0, R.id.imageView1, R.id.imageView2,R.id.imageView3 };int mintFlat = 0;int mintImgFlat = 0;final String BTN_SAVE = "save";final String BTN_ALTER = "alter";final int CAMERA = 120;int position;Boolean isadd = true;Typeface mTypeface_HM;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);View parentView = View.inflate(getBaseContext(), R.layout.editview,null);setContentView(parentView);mTypeface_HM = Typeface.createFromAsset(getAssets(), "fonts/Hym.ttf");mLogs = new Logs();medt_title = (MyEditView) findViewById(R.id.edittitle);mtv_showDate = (TextView) findViewById(R.id.showdate);medt_content = (MyEditView) findViewById(R.id.editcontent);medt_title.setTypeface(mTypeface_HM);medt_content.setTypeface(mTypeface_HM);mtv_showDate.setTypeface(mTypeface_HM);mbtn_back = (Button) findViewById(R.id.back);mbtn_right = (Button) findViewById(R.id.ok);mbtn_right.setTag(BTN_SAVE);mbtn_addPicture = (Button) findViewById(R.id.addpicture);mRL_imgGroup = (RelativeLayout) findViewById(R.id.imagewindow);medt_content.setOnTouchListener(this);mGetPicture = new GetPictureFormCAMER(this);SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy/hhmmss");Date date = new Date(System.currentTimeMillis());mstrDate = format.format(date);mtv_showDate.setText(mstrDate);if (null != getIntent().getExtras()) {mLogs = (Logs) getIntent().getExtras().get("Logs");isadd = getIntent().getExtras().getBoolean("isadd");position = getIntent().getExtras().getInt("position");if (null != mLogs) {mbtn_right.setText("修改");mbtn_right.setTag(BTN_ALTER);mstrTitle = mLogs.getTitleView();mstrContent = mLogs.getTextView();mstrImgList = mLogs.getUrList();medt_title.setText(mstrTitle);medt_content.setText(mstrContent);for (int i = 0; i < 4; i++) {if (!mstrImgList[i].equals("0")) {Bitmap bitmap = mGetPicture.takePictureFormName(mstrImgList[i]);if (null != bitmap) {ImageView imageView = (ImageView) findViewById(mintImgId[i]);imageView.setImageBitmap(bitmap);}}}medt_title.setEnabled(false);medt_content.setEnabled(false);}}mbtn_back.setOnClickListener(this);mbtn_right.setOnClickListener(this);mbtn_addPicture.setOnClickListener(this);parentView.setOnTouchListener(this);medt_content.setOnTouchListener(this);for (int i = 0; i < mintImgId.length; i++) {ImageView imageView = (ImageView) findViewById(mintImgId[i]);imageView.setOnClickListener(this);imageView.setOnLongClickListener(this);}}protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (0 == requestCode) {return ;}Bitmap bitmap = mGetPicture.getPictureFromResult(resultCode,requestCode, data);if (null == bitmap) {return;}String name_R = mGetPicture.getname();Toast.makeText(this, name_R, Toast.LENGTH_LONG).show();ImageView imageView = (ImageView) findViewById(mintImgId[mintImgFlat]);imageView.setImageBitmap(bitmap);mstrImgList[mintImgFlat] = name_R;}private void saveOn() {mstrTitle = medt_title.getText().toString();mstrContent = medt_content.getText().toString();mLogs.setTitleView(mstrTitle);mLogs.setTextView(mstrContent);mLogs.setDate(mstrDate);mLogs.setUrList(mstrImgList);if (true == isadd) {Intent intent = getIntent();intent.putExtra("Logs", mLogs);Bundle bundle = new Bundle();EditActivity.this.setResult(0, intent);} else {Intent intent = new Intent();intent.putExtra("Logs", mLogs);intent.putExtra("position", position);intent.putExtra("isedit", true);EditActivity.this.setResult(0, intent);}DateSQlite db = new DateSQlite(this);db.insertLog(mLogs);EditActivity.this.finish();overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_right);}@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根switch (v.getId()) {case R.id.ok:// 判断内容是否为空if (0 == medt_content.length() && 0 == medt_title.length()) {Toast.makeText(this, "日记内容还是空的哦!", Toast.LENGTH_SHORT).show();} else {// 判断当前内容的状态 编辑模式 or 查看模式if (mbtn_right.getTag().equals(BTN_ALTER)) {mbtn_right.setTag(BTN_SAVE);mbtn_right.setText("保存");medt_title.setEnabled(true);medt_content.setEnabled(true);} else {saveOn();}}break;case R.id.back:if (mbtn_right.getTag().equals(BTN_SAVE)) {DialogMessegs();} else {setResult(1);EditActivity.this.finish();overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_right);}break;case R.id.addpicture:mRL_imgGroup.setVisibility(View.VISIBLE);mintFlat = 1;break;case R.id.imageView0:popuwindow();mintImgFlat = 0;break;case R.id.imageView1:popuwindow();mintImgFlat = 1;break;case R.id.imageView2:popuwindow();mintImgFlat = 2;break;case R.id.imageView3:popuwindow();mintImgFlat = 3;break;case R.id.editcontent:medt_content.requestFocus();default:break;}}public void popuwindow() {AlertDialog.Builder deleteBuilder = new AlertDialog.Builder(this);deleteBuilder.setMessage("请选择一个来源");final int KEY = position;deleteBuilder.setPositiveButton("相机",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mGetPicture.takePhoto();}});deleteBuilder.setNegativeButton("相册",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mGetPicture.takeAlbum();}});deleteBuilder.create();deleteBuilder.show();}public void DialogMessegs() {AlertDialog.Builder deleteBuilder = new AlertDialog.Builder(this);deleteBuilder.setMessage("确定要放弃编辑?");final int KEY = position;deleteBuilder.setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {setResult(1);EditActivity.this.finish();overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_right);}});deleteBuilder.setNegativeButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});deleteBuilder.create();deleteBuilder.show();}public void deleteImage(int mintImgFlatx) {AlertDialog.Builder deleteBuilder = new AlertDialog.Builder(this);deleteBuilder.setMessage("确定删除图片?");final int mintImgFlat = mintImgFlatx;deleteBuilder.setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {ImageView imageView = (ImageView) findViewById(mintImgId[mintImgFlat]);imageView.setImageResource(R.drawable.img_add_x);mstrImgList[mintImgFlat] = 0 + "";}});deleteBuilder.setNegativeButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});deleteBuilder.create();deleteBuilder.show();}@Overridepublic boolean onTouch(View v, MotionEvent event) {medt_content.requestFocus();if (1 == mintFlat) {int height = mRL_imgGroup.getTop();int y = (int) event.getY();if (event.getAction() == MotionEvent.ACTION_UP) {if (y < height) {mRL_imgGroup.setVisibility(View.GONE);mintFlat = 0;}}}return true;}@Overridepublic boolean onLongClick(View v) {switch (v.getId()) {case R.id.imageView0:deleteImage(0);break;case R.id.imageView1:deleteImage(1);break;case R.id.imageView2:deleteImage(2);break;case R.id.imageView3:deleteImage(3);break;default:break;}return true;}}

4.3.1 MyEditView

package com.wl.android.myeditView;import com.example.timelinenote.R;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.util.AttributeSet;import android.widget.EditText;public class MyEditView extends EditText {  //private static final String TAG = "com.lms.todo.views.MyEditView";  private Rect mRect;  private Paint mPaint;  private int mColor = R.color.grayBlown_press;   private final int padding = 10;    private int lineHeight;  private int viewHeight,viewWidth;  public MyEditView(Context context) {    this(context, null);  }  public MyEditView(Context context, AttributeSet attrs) {    this(context, attrs, 0);  }  public MyEditView(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);    init(context, attrs);  }  private void init(Context context, AttributeSet attrs) {    mRect = new Rect();    mPaint = new Paint();    mPaint.setStyle(Paint.Style.STROKE);    mPaint.setColor(mColor);    mPaint.setStrokeWidth(2);    mPaint.setAntiAlias(true);        setFocusable(true);    setFocusableInTouchMode(true);  }  @Override  protected void onDraw(Canvas canvas) {    int count = getLineCount();    Rect r = mRect;     Paint paint = mPaint;    int lineHeight = 10;    int i = 0;    while (i < count) {      lineHeight = getLineBounds(i, r);      canvas.drawLine(r.left, lineHeight + padding, r.right, lineHeight + padding,          paint);      i++;    }    int maxLines = 15;    int avgHeight = lineHeight / count;    int currentLineHeight = lineHeight;    i = 0;    while(i < maxLines){      currentLineHeight = currentLineHeight + avgHeight + padding;      canvas.drawLine(r.left, currentLineHeight, r.right, currentLineHeight, paint);      i++;    }    super.onDraw(canvas);    }}


4.3.2 MyImageView

package com.wl.android.myeditView;import android.content.Context;import android.graphics.Canvas;import android.graphics.Path;import android.graphics.RectF;import android.util.AttributeSet;import android.widget.ImageView;public class MyImageView extends ImageView {public MyImageView(Context context) {super(context);}public MyImageView(Context context, AttributeSet attrs) {super(context, attrs);}public MyImageView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onDraw(Canvas canvas) {Path clipPath = new Path();int w = this.getWidth();int h = this.getHeight();clipPath.addRoundRect(new RectF(0, 0, w, h), 90.0f, 90.0f,Path.Direction.CW);canvas.clipPath(clipPath);super.onDraw(canvas);}}


4.4.1 DateSQL

package com.wl.android.DateSQLite;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteConstraintException;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;import com.wl.android.enpty.Logs;public class DateSQlite {SQLiteDatabase db;Context context;public final static int KEY = 3;public final static int PASSWORD = 1;public final static int QUESTION = 2;public final static int DATE = 0;public final static int TITLE = 1;public final static int CONTEXT = 2;public final static int IMG0 = 3;public final static int IMG1 = 4;public final static int IMG2 = 5;public final static int IMG3 = 6;public DateSQlite(Context context) {this.context = context;db = SQLiteDatabase.openOrCreateDatabase(context.getCacheDir().toString() + "/my.db3", null);try {db.execSQL("create table Logs("+"date varchar(10) primary key"+ ", title varchar(50)"+ ", context varchar(400)"+ ", img0 varchar(20)"+ ", img1 varchar(20)"+ ", img2 varchar(20)"+ ", img3 varchar(20))");} catch (Exception e) {// TODO: handle exception}try {db.execSQL("create table user_table("+ " id varchar(2) primary key,"+ " password varchar(8),"+ " question varchar(200),"+ " keys varchar(80))");db.execSQL("update user_table"+ " set password = '0', "+ " question = '0',"+ " keys = '0'"+ " where id = 'Only'");} catch (Exception e) {// TODO: handle exception}}public void insertInformation(String password, String question,  String keys){try {inserData(db, question, password, keys);} catch (Exception e) {db.execSQL("create table if not exists user_table("+ " id varchar(2) primary key,"+ " password varchar(8),"+ " question varchar(200),"+ " keys varchar(80))");inserData(db, question, password, keys);}}public void deleteUser(){deleteImfromation();}private void deleteImfromation(){try {db.execSQL("update user_table"+ " set password = '0', "+ " question = '0',"+ " keys = '0'"+ " where id = 'Only'");} catch (Exception e) {// TODO: handle exception}}private void inserData(SQLiteDatabase db2, String question, String password, String keys) {try {db.execSQL("insert into user_table values(?, ?, ?, ?)", new String[]{"Only", password, question,keys});} catch (Exception e) {// TODO: handle exceptiondb.execSQL("update user_table"+ " set password = '"+ password+"', "+ " question = '"+question+"',"+ " keys = '"+keys+"'"+ " where id = 'Only'");}}public Cursor getInformation(){return selectInformation();}private Cursor selectInformation(){Cursor cursor;try {cursor = db.rawQuery("select * from user_table", null);cursor.moveToFirst();} catch (Exception e) {// TODO: handle exceptionreturn null;}return cursor;}public void deleteLog(Logs logs){db.execSQL("delete from Logs where date = '"+ logs.getDate() +"'");}public void deleteLogs(){db.execSQL("delete from Logs where date = '*'");}public void updataLog(Logs logs){db.execSQL("update Logs"+ " set title = '"+ logs.getTitleView()+"', "+ " context = '"+logs.getTextView()+"',"+ " img0 = '"+logs.getUrList()[0]+"',"+ " img1 = '"+logs.getUrList()[1]+"',"+ " img2 = '"+logs.getUrList()[2]+"',"+ " img3 = '"+logs.getUrList()[3]+"'"+ " where date = '"+logs.getDate()+"'");}public Boolean hasLogs(Logs logs){try {Cursor cursor;cursor = db.rawQuery("select * from Logs where date = '"+ logs.getDate()+"'",null);cursor.close();return true;} catch (Exception e) {// TODO: handle exceptionreturn false;}}public ArrayList<Logs> getLogs(){Cursor cursor;ArrayList<Logs> list= new ArrayList<Logs>();cursor = db.rawQuery("select * from Logs", null);cursor.moveToFirst();Boolean haveNext = true;  while (haveNext) {Logs logs = new Logs();logs.setDate(cursor.getString(0));logs.setTitleView(cursor.getString(1));logs.setTextView(cursor.getString(2));String string[] = {cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6)};logs.setUrList(string);list.add(logs);haveNext = cursor.moveToNext();}cursor.close();return list;}public void insertLogs(ArrayList<Logs> list){for (int i = 0; i < list.size(); i++) {insertLog(list.get(i));}}public void insertLog(Logs logs){String date = logs.getDate();String title = logs.getTitleView();String context = logs.getTextView();String img0 = logs.getUrList()[0];String img1 = logs.getUrList()[1];String img2 = logs.getUrList()[2];String img3 = logs.getUrList()[3];try {db.execSQL("insert into Logs values(?, ?, ?, ?, ?, ?, ?)", new String []{date, title, context, img0, img1, img2, img3});} catch (SQLiteConstraintException e) {e.printStackTrace();try {db.execSQL("create table Logs("+"date varchar(10) primary key"+ ", title varchar(50)"+ ", context varchar(400)"+ ", img0 varchar(20)"+ ", img1 varchar(20)"+ ", img2 varchar(20)"+ ", img3 varchar(20))");db.execSQL("insert into Logs values(?,?,?,?,?,?,?)", new String []{date, title, context, img0, img1, img2, img3});} catch (Exception e2) {System.out.println("日期已存在,内容将被修改");updataLog(logs);}}}}


4.5.1 GetPicture

package com.wl.android.enpty;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Calendar;import java.util.Locale;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.Path;import android.net.Uri;import android.os.Environment;import android.provider.MediaStore;import android.text.format.DateFormat;import android.util.DisplayMetrics;import android.widget.Toast;public class GetPictureFormCAMER {private Activity activity;private static final int CAMEA_TAKE = 1;private static final int CAMEA_SELECT = 2;public String name;private static final String PATH = Environment.getExternalStorageDirectory() + "/a_Timeline/image";private boolean isBig = false;// Environment.getExternalStorageDirectory() +public GetPictureFormCAMER(Activity activity) {this.activity = activity;}public GetPictureFormCAMER(){}public String getname_R() {new DateFormat();String name_R = DateFormat.format("yyyyMMMdd_hhmmss",Calendar.getInstance(Locale.CHINA))+ ".png";return name_R;}public String getname() {return name;}public String getPath() {return PATH;}public void takeAlbum() {Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");name = getname_R();activity.startActivityForResult(intent, CAMEA_SELECT);}public void takePhoto() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);new DateFormat();name = getname_R();Uri imageUri = Uri.fromFile(new File(PATH, name));intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);activity.startActivityForResult(intent, CAMEA_TAKE);}public Bitmap getPictureFromResult(int resultCode, int requestCode,Intent data) {if (resultCode == activity.RESULT_OK) {switch (requestCode) {case CAMEA_TAKE:Bitmap bitmap = BitmapFactory.decodeFile(PATH + "/" + name);saveBitmap(name, bitmap);Toast.makeText(activity, name, Toast.LENGTH_LONG).show();System.out.println(bitmap.getHeight() + "====="+ bitmap.getWidth());DisplayMetrics dm = new DisplayMetrics();activity.getWindowManager().getDefaultDisplay().getMetrics(dm);float scale = bitmap.getWidth() / (float) dm.widthPixels;Bitmap newBitmap = null;if (scale > 1) {newBitmap = zoomBitmap(bitmap, bitmap.getWidth() / scale,bitmap.getHeight() / scale);bitmap.recycle();isBig = true;}if (isBig) {return newBitmap;} else {return bitmap;}case CAMEA_SELECT:ContentResolver resolver = activity.getContentResolver();Uri imgUri = data.getData();try {Bitmap photoBitmap = MediaStore.Images.Media.getBitmap(resolver, imgUri);saveBitmap(name, photoBitmap);DisplayMetrics dm_2 = new DisplayMetrics();activity.getWindowManager().getDefaultDisplay().getMetrics(dm_2);float scale_2 = photoBitmap.getWidth()/ (float) dm_2.widthPixels;Bitmap newBitmap_2 = null;if (scale_2 > 1) {newBitmap_2 = zoomBitmap(photoBitmap,photoBitmap.getWidth() / scale_2,photoBitmap.getHeight() / scale_2);photoBitmap.recycle();isBig = true;}if (isBig) {return newBitmap_2;} else {return photoBitmap;}} catch (Exception e) {// TODO: handle exception}break;default:break;}}return null;}public Bitmap zoomBitmap(Bitmap bitmap, float width, float height) {int w = bitmap.getWidth();int h = bitmap.getHeight();Matrix matrix = new Matrix();float scaleWidth = ((float) width / w);float scaleheight = ((float) height / h);matrix.postScale(scaleWidth, scaleheight);Bitmap newbitBitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix,true);return newbitBitmap;}public void saveBitmap(String name, Bitmap bm) {File ff = new File(PATH);if (ff.exists() == false) {ff.mkdirs();}File f = new File(PATH + "/" + name);System.out.println("开始保存中.......");try {FileOutputStream out = new FileOutputStream(f);bm.compress(Bitmap.CompressFormat.PNG, 90, out);out.flush();out.close();System.out.print(" 保存成功 ╮(╯_╰)╭");} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.print("保存失败");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.print("保存失败");}}public Bitmap takePictureFormName(String names){Bitmap bitmap = BitmapFactory.decodeFile(PATH + "/" + names);if (null != bitmap) {return bitmap;}return null;}}


4.5.2 Logs

package com.wl.android.enpty;import java.io.Serializable;import java.util.ArrayList;import java.util.List;import android.net.Uri;public class Logs implements Serializable {private String titleView;private String textView;private String tipsView;private String date;private String[] urList = {"0","0","0","0"};public String[] getUrList() {return urList;}public void setUrList(String[] urList) {this.urList = urList;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getTitleView() {return titleView;}public void setTitleView(String titleView) {this.titleView = titleView;}public String getTextView() {return textView;}public void setTextView(String textView) {this.textView = textView;}public String getTipsView() {return tipsView;}public void setTipsView(String tipsView) {this.tipsView = tipsView;}}


4.6.1 MyAdapter

package com.wl.android.myadapter;import java.util.List;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Typeface;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.timelinenote.R;import com.wl.android.enpty.GetPictureFormCAMER;import com.wl.android.enpty.Logs;public class Myadapter extends BaseAdapter{private List<Logs> list;private Context context;ViewHolder viewHoder;private GetPictureFormCAMER getpicture = new GetPictureFormCAMER();Typeface mTypeface_HM ;public Myadapter(List<Logs> list, Context context) {this.list = list;this.context = context;mTypeface_HM = Typeface.createFromAsset(context.getAssets(), "fonts/Hym.ttf");}public int getCount() {// TODO 自动生成的方法存根return list.size();}@Overridepublic Object getItem(int position) {// TODO 自动生成的方法存根return null;}@Overridepublic long getItemId(int position) {// TODO 自动生成的方法存根return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = new ViewHolder();if (convertView == null) {convertView = View.inflate(context,R.layout.timeline_index, null);viewHolder.titleView = (TextView) convertView.findViewById(R.id.title);viewHolder.textView = (TextView) convertView.findViewById(R.id.text);viewHolder.dateView = (TextView) convertView.findViewById(R.id.date);viewHolder.textView.setTypeface(mTypeface_HM);viewHolder.dateView.setTypeface(mTypeface_HM);viewHolder.titleView.setTypeface(mTypeface_HM);viewHolder.img[0] = (ImageView) convertView.findViewById(R.id.imagetlv0);viewHolder.img[1] = (ImageView) convertView.findViewById(R.id.imagetlv1);viewHolder.img[2] = (ImageView) convertView.findViewById(R.id.imagetlv2);viewHolder.img[3] = (ImageView) convertView.findViewById(R.id.imagetlv3);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder)convertView.getTag();}viewHolder.titleView.setText(list.get(position).getTitleView());viewHolder.textView.setText(list.get(position).getTextView());viewHolder.dateView.setText(list.get(position).getDate());String names[] = list.get(position).getUrList();for (int i = 0; i < 4; i++) {if (!names[i].equals("0")) {Bitmap bitmap = getpicture.takePictureFormName(names[i]);if (null != bitmap) {viewHolder.img[i].setImageBitmap(bitmap);viewHolder.img[i].setVisibility(View.VISIBLE);}}else {viewHolder.img[i].setVisibility(View.GONE);}}return convertView;}}class ViewHolder{public TextView titleView;public TextView textView;public TextView dateView;public ImageView[] img = new ImageView[4];}


----------------------------------我是。。。。的分割线--------------------------------------------------------------------------
突然觉得代码是不是贴太多了囧???不管了 等待更新。。。

0 0
原创粉丝点击