Android開發——簡易備忘錄(三)
阿新 • • 發佈:2018-12-20
實驗內容
1. android 開發環境搭建, 開發工具可以是eclipse+adt 或android studio。
2. 按照實驗課要求製作對應的app小程式,實現按鈕新增備忘,並且包含日期時間。
3. 編寫並提交實驗報告。
實驗步驟
1.部分程式碼如下:
<Button android:id="@+id/b1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="OnClick" android:text="新增備忘錄"/> <ListView android:id="@+id/L1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:dividerHeight="0.5dp" android:divider="#000000"> </ListView>
部分程式碼如下:
<ScrollView android:id="@+id/scrollView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="請選擇日期和時間" /> <DatePicker android: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" /> <!-- 定義一個DatePicker元件 --> <!-- 定義一個TimePicker元件 --> <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/bt2" android:text="新增圖片" android:onClick="Onclick" android:textColor="#ff000d"/> <EditText android:id="@+id/edt1" android:layout_width="match_parent" android:layout_height="100dp" android:hint="在這裡寫備忘記錄" android:maxLines="3" /> <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="完成" /> </LinearLayout> </ScrollView>
2、在MainActivity中顯示佈局及設定按鈕功能
部分程式碼:
public class MainActivity extends AppCompatActivity { public String makeTimeString(int year,int month,int day,int hour,int minute,String memoText) { return year + "年" + (month + 1) + "月" + day + "日" + hour+"時" +minute+ "分------" + memoText; } public ArrayList list=new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button b1 = (Button)findViewById(R.id.b1); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { startActivityForResult(new Intent(MainActivity.this,Ctime.class),1); } }); } protected void onActivityResult (int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode,resultCode,data); if(requestCode == 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); String memoText = data.getStringExtra("memoText"); String text = makeTimeString(year,month,day,hour,minute,memoText); ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); adapter.add(text); ListView listView =(ListView)findViewById(R.id.L1); listView.setAdapter(adapter); } } }
3、在Ctime中獲取日期時間等功能
public class Ctime extends AppCompatActivity {
public int year;
public int month;
public int day;
public int hour;
public int minute;
public String memoText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ctime);
DatePicker dp=(DatePicker)findViewById(R.id.datePicker);
TimePicker tp=(TimePicker)findViewById(R.id.timePicker);
tp.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);
dp.init(year, month, day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int year, int month, int day) {
Ctime.this.year = year;
Ctime.this.month =month;
Ctime.this.day = day;
}
});
tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker timePicker, int hour, int minute) {
Ctime.this.hour = hour;
Ctime.this.minute =minute;
}
});
Button b2 =(Button)findViewById(R.id.bt1);
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText text=(EditText)findViewById(R.id.edt1);
memoText =text.getText().toString();
Intent data =new Intent();
data.putExtra("year",year);
data.putExtra("month",month);
data.putExtra("day",day);
data.putExtra("hour",hour);
data.putExtra("minute",minute);
data.putExtra("memoText",memoText);
setResult(1,data);
finish();
}
});
}
public void Onclick(View view){
AlertDialog.Builder b = new AlertDialog.Builder(Ctime.this);
b.setTitle("請繪製:");
View MyView = new MyView(Ctime.this);
b.setView(MyView);
b.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
b.show();
}
}
4、新建MyView.java並完成繪製圖像功能
public class MyView extends View {
float firstX;
float firstY;
Path path;
MyView(Context context)
{
super(context);
path = new Path();
}
@Override
protected 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);
}
@Override
public 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);
}
}
實驗結果
當按動“新增影象”按鈕按鈕時,新增影象如圖: