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
- Android 学习实例 Note
- Android天天向上学习note
- 学习 note
- android note
- android note
- Android note
- android note
- android note
- android note
- android note
- Android HAL实例学习
- android Broadcast学习 实例
- XAML学习Note
- java学习NOTE
- Rails学习 note and
- Linux学习note
- C++/C 学习Note
- Android build system note
- 日常小结-XmlDTD约束
- Spring中的线程池ThreadPoolTaskExecutor
- 音视频同步系列文章之------基于时间戳的同步点
- 003——filter粗粒度权限控制
- javaweb网站开发模板化设计
- Android 学习实例 Note
- Bugzilla使用手册
- 响应式三步曲
- 为什么要BI(商业智能)?
- Swift:optional 可选项的简易说明
- KeyValue 结构
- Ibatis中#和$的区别
- SQL 游标 一个简单的例子
- 呼吸稳定性判断步骤