实验内容

1.位图预览

2.位图数据传递显示

实验步骤

活动1:

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:orientation="vertical"android:gravity="left"
><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加备忘录内容"android:onClick="onMyClick"/><ListViewandroid:id="@+id/list_view"android:layout_width="match_parent"android:layout_height="match_parent"></ListView></LinearLayout>

java代码:

package com.example.administrator.myapplication;import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private  List<TM> list=new ArrayList<TM>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == 1) {int year = data.getIntExtra("year", 0);int month = data.getIntExtra("month", 0);int day = data.getIntExtra("day", 0);int hour = data.getIntExtra("hour", 0);int minute = data.getIntExtra("minute", 0);byte[] bitmapBytes = data.getByteArrayExtra("bitmap");Bitmap bmp = null;if (bitmapBytes != null) {bmp = BitmapFactory.decodeByteArray(bitmapBytes, 0, bitmapBytes.length);}String memoText = data.getStringExtra("memoText");String text = makeTimeString(year, month, day, hour, minute, memoText);TM tm=new TM();tm.bmp=bmp;tm.text=text;list.add(tm);BaseAdapter baseAdapter=new MyBaseAdapter(list,getApplicationContext());ListView listView = (ListView) findViewById(R.id.list_view);// listView.setAdapter(adapter);listView.setAdapter(baseAdapter);}}public String makeTimeString(int year, int month, int day, int hour, int minute, String memoText) {return "日期:" + year + "年"+ (month + 1) + "月" + day + "日 时间:" + hour + "时" + minute + "分 ---" + memoText;}public void onMyClick(View view) {Intent intent = new Intent(MainActivity.this, Main2Activity.class);startActivityForResult(intent, 1);}}class MyBaseAdapter extends BaseAdapter {private List<TM> list;private Context mcontext;public MyBaseAdapter(List list, Context mcontext) {super();this.list = list;this.mcontext = mcontext;}public int getCount() {return list.size();}public Object getItem(int position) {return null;}public long getItemId(int position) {return 0;}public View getView(int position, View convertView, ViewGroup parent) {LayoutInflater inflater = LayoutInflater.from(mcontext);View v1 = inflater.inflate(R.layout.item, null);TextView textView = (TextView) v1.findViewById(R.id.textView);ImageView imageView = (ImageView) v1.findViewById(R.id.im);textView.setText(list.get(position).text);imageView.setImageBitmap(list.get(position).bmp);return v1;}}

活动2:

Xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/scrollView1"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="请选择日期和时间"/><!-- 定义一个DatePicker组件 --><DatePickerandroid:id="@+id/datePicker"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:calendarViewShown="true"android:endYear="2050"android:spinnersShown="true"android:startYear="2000" /><TimePickerandroid:theme="@android:style/Theme.Holo.Light.NoActionBar"android:id="@+id/timePicker"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" /><!-- 定义一个TimePicker组件 --><Buttonandroid:id="@+id/bt2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加图片"android:onClick="MyClick2"android:layout_gravity="left"/><EditTextandroid:id="@+id/edt1"android:layout_width="match_parent"android:layout_height="100dp"android:maxLines="3"android:hint="在这里写备忘记录"/><Buttonandroid:id="@+id/bt1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="完成"android:onClick="MyClick"android:layout_gravity="center"/></LinearLayout>
</ScrollView>

JAVA:

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.icu.util.Calendar;
import android.support.v4.content.SharedPreferencesCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TimePicker;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;public class Main2Activity extends AppCompatActivity {private int year;private int month;private int day;private int hour;private int minute;private Bitmap bmp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker);timePicker.setIs24HourView(true);Calendar c = Calendar.getInstance();year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH);day = c.get(Calendar.DAY_OF_MONTH);hour = c.get(Calendar.HOUR);minute = c.get(Calendar.MINUTE);// 初始化DatePicker,初始化时指定监听器datePicker.init(year, month, day, new DatePicker.OnDateChangedListener(){@Overridepublic void onDateChanged(DatePicker arg0, int year,int month, int day){//在这里保存用户选择的日期:Main2Activity.this.year=year;Main2Activity.this.month=month;Main2Activity.this.day=day;}});// 为TimePicker指定监听器timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute){Main2Activity.this.hour=hourOfDay;Main2Activity.this.minute=minute;}});}public static Bitmap getBitmapFromView(View v) {Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);Canvas c = new Canvas(b);v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());// Draw backgroundDrawable bgDrawable = v.getBackground();if (bgDrawable != null)bgDrawable.draw(c);elsec.drawColor(Color.WHITE);// Draw view to canvasv.draw(c);return b;}public  void MyClick2(View view){AlertDialog.Builder b = new AlertDialog.Builder(Main2Activity.this);//设置对话框标题:b.setTitle("test");//创建出我们的自定义控件:final View myview = new MyView(Main2Activity.this);//添加到对话框中b.setView(myview);//设置对话框的确定按钮b.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {bmp=Main2Activity.getBitmapFromView(myview);ImageView img=(ImageView)findViewById(R.id.img);img.setImageBitmap(bmp);}});//显示对话框b.show();}public  void MyClick(View view){EditText text=(EditText)findViewById(R.id.edt1);String memoText=text.getText().toString();Intent data = new Intent();// 之前需要定义5个记录当前时间的变量data.putExtra("year",year);data.putExtra("month",month);data.putExtra("day",day);data.putExtra("hour",hour);data.putExtra("minute",minute);data.putExtra("memoText",memoText);ByteArrayOutputStream baos = new ByteArrayOutputStream();bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);data.putExtra("bitmap", baos.toByteArray());setResult(1,data);//关闭当前Activity:finish();}
}

自定义控件MyView  java代码:

package com.example.administrator.myapplication;/*** Created by Administrator on 2017/11/26.*/
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.MotionEvent;
import android.view.View;public class MyView extends View {float firstX;float firstY;Path path;MyView(Context context){super(context);path = new Path();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Paint paint = new Paint();paint.setColor(Color.BLUE);paint.setStrokeWidth(10);//让画出的图形是空心的paint.setStyle(Paint.Style.STROKE);canvas.drawPath(path,paint);}@Overridepublic boolean onTouchEvent(MotionEvent event) {int act = event.getAction();if (act == MotionEvent.ACTION_DOWN){float x = event.getX();float y = event.getY();firstX = x;firstY = y;path.moveTo(firstX,firstY);return true;}else if (act == MotionEvent.ACTION_MOVE){float x = event.getX();float y = event.getY();path.lineTo(x,y);invalidate();}return super.onTouchEvent(event);}
}

实体类TM(item.xml组件抽象属性):

package com.example.administrator.myapplication;import android.graphics.Bitmap;/*** Created by Administrator on 2017/11/30.*/public class TM {public String text;public Bitmap bmp;}
item.xml(Baseadapter布局设置):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:id="@+id/im"android:layout_width="60dp"android:layout_height="60dp"android:scaleType="centerInside"/></LinearLayout>

实验结果

Android开发————简易App设计(一)相关推荐

  1. android 矢量图形文件,Android Studio进行APP设计开发之矢量图及XML文件转换

    Android Studio进行APP设计开发之矢量图及XML文件转换 当我们使用Android studio进行APP设计开发时,会用到矢量图,那么要将矢量图运用到安卓工程drawable中去,就需 ...

  2. Android Studio进行APP设计开发之矢量图及XML文件转换

    Android Studio进行APP设计开发之矢量图及XML文件转换 当我们使用Android studio进行APP设计开发时,会用到矢量图,那么要将矢量图运用到安卓工程drawable中去,就需 ...

  3. [科技论文写作]基于Android的支付宝APP设计与开发实现

    文章目录 前言 正文 基于Android的支付宝APP设计与实现 1 选题背景 2 选题价值 2.1 理论价值 2.2 实践价值 3 文献综述 4 拟研究内容 5 拟解决关键问题 6 拟采用的研究方法 ...

  4. android studio 课程表,基于课程表的安卓Android手机控制APP设计(AndroidStudio,SQLite)(含录像)...

    基于课程表的安卓Android手机控制APP设计(AndroidStudio,SQLite)(含录像)(毕业论文12000字,程序代码) 摘 要 随着IT技术的发展,以前老套的课程表内容查询管理方式已 ...

  5. Android开发简易教程

    Android开发简易教程 Android 开发因为涉及到代码编辑.UI 布局.打包等工序,有一款好用的IDE非常重要.Google 最早提供了基于 Eclipse 的 ADT 作为开发工具,后来在2 ...

  6. Android 开发 关于APP无法安装到Android模拟器上的问题

    Android 开发 关于APP无法安装到Android模拟器上的问题 我们在创建一个app后,打算安装到Android模拟器上.可能会出现无法安装,或者提示已经安装无法卸载的问题.这个时候需要添加兼 ...

  7. android开发 重启app

    android开发 重启app 我们在android开发的过程中,可能遇到过这样的情况,当数据加载完成,或者从服务器下载文件完成,需要重启 app才会生效. 实现这个功能很简单,只需在需要重启的地方加 ...

  8. android微信支付都需要什么意思,Android开发微信APP支付功能的要点小结

    基本概念 包名值得是你APP的包,在创建工程时候设置的,需要在微信支付平台上面设置. 签名指的是你生成APK时候所用的签名文件的md5,去掉:全部小写,需要在微信支付平台上面设置. 调试阶段,签名文件 ...

  9. Android开发:app工程集成银联支付功能(客户端)

    Android开发:app工程集成银联支付功能(客户端) email:chentravelling@163.com 上一篇博文完成了服务器端的集成,可参考: Android开发:app工程集成银联支付 ...

最新文章

  1. List字符串数组如何去重
  2. 使用JNDI操作LDAP(5)(转载)
  3. 使用Cbrgen和Setdest构造无线仿真环境
  4. c++ mysql 配置_C++--mysql相关配置
  5. 移动多媒体呼叫中心在成都启用
  6. CenOS 配置C/C++语言
  7. 服务器 | 安装最新版R和Rstudio(3.5.3)
  8. mysql做千万条压测数据
  9. vs2012建立java,在Microsoft Visual Studio 2012中使用Java
  10. Linux学习课程笔记(1)
  11. 亚马逊、Facebook、Google 等科技公司为何越来越难招到人了?
  12. 怎么把手机屏幕投射镜像到电脑上面?
  13. UDP实时图像传输进阶篇——1080P视频传输
  14. 电脑怎么装linux系统
  15. 我儿喜欢摸奶奶 什么原因_我是奶奶,我的编码职业才刚刚开始
  16. Flash Platform 游戏开发入门
  17. 【Vue3+Vite+TS项目集成ESlint +Prettier实现代码规范检查和代码格式化】
  18. 优秀课程案例|如何用scratch画折线统计图
  19. Spring Cloud升级之路 - Hoxton - 10. 网关重试带Body的请求Body丢失的问题
  20. Java中级开发笔试题及答案,最全指南

热门文章

  1. 关闭 Gatekeeper
  2. 华硕笔记本升级固态SSD过程
  3. Nginx软件介绍及下载地址
  4. 浅谈社群运营的2种抽奖玩法
  5. 在前端layui项目中使用ztree
  6. [转]Windows Shell 编程 第十章
  7. 怎样写出优秀的的研究计划 (Research Proposal) ?
  8. 电脑知识:台式电脑应该选择品牌和组装,值得收藏
  9. LED技术50年秘史回顾:从指示灯到街灯
  10. 新版正方教务网模拟登录python实现