1. 程式人生 > >Android開發——簡易備忘錄(三)

Android開發——簡易備忘錄(三)

實驗內容

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);
    }
}

實驗結果

當按動“新增影象”按鈕按鈕時,新增影象如圖: