1 package com.example.alimjan.hello_world.Utils;
2
3 import android.graphics.Bitmap;
4 import android.graphics.BitmapFactory;
5
6 import java.io.BufferedInputStream;
7 import java.io.BufferedOutputStream;
8 import java.io.File;
9 import java.io.FileInputStream;
10 import java.io.FileOutputStream;
11 import java.io.FilenameFilter;
12 import java.util.ArrayList;
13 import java.util.Locale;
14
15 public class FileUtil {
16
17 public static void saveText(String path, String txt) {
18 try {
19 FileOutputStream fos = new FileOutputStream(path);
20 fos.write(txt.getBytes());
21 fos.close();
22 } catch (Exception e) {
23 e.printStackTrace();
24 }
25 }
26
27 public static String openText(String path) {
28 String readStr = "";
29 try {
30 FileInputStream fis = new FileInputStream(path);
31 byte[] b = new byte[fis.available()];
32 fis.read(b);
33 readStr = new String(b);
34 fis.close();
35 } catch (Exception e) {
36 e.printStackTrace();
37 }
38 return readStr;
39 }
40
41 public static void saveImage(String path, Bitmap bitmap) {
42 try {
43 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
44 bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);
45 bos.flush();
46 bos.close();
47 } catch (Exception e) {
48 e.printStackTrace();
49 }
50 }
51
52 public static Bitmap openImage(String path) {
53 Bitmap bitmap = null;
54 try {
55 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
56 bitmap = BitmapFactory.decodeStream(bis);
57 bis.close();
58 } catch (Exception e) {
59 e.printStackTrace();
60 }
61 return bitmap;
62 }
63
64 public static ArrayList<File> getFileList(String path, String[] extendArray) {
65 ArrayList<File> displayedContent = new ArrayList<File>();
66 File[] files = null;
67 File directory = new File(path);
68 if (extendArray != null && extendArray.length>0) {
69 FilenameFilter fileFilter = getTypeFilter(extendArray);
70 files = directory.listFiles(fileFilter);
71 } else {
72 files = directory.listFiles();
73 }
74
75 if (files != null) {
76 for (File f : files) {
77 if (!f.isDirectory() && !f.isHidden()) {
78 displayedContent.add(f);
79 }
80 }
81 }
82 return displayedContent;
83 }
84
85 public static FilenameFilter getTypeFilter(String[] extendArray) {
86 final ArrayList<String> fileExtensions = new ArrayList<String>();
87 for (int i=0; i<extendArray.length; i++) {
88 fileExtensions.add(extendArray[i]);
89 }
90 FilenameFilter fileNameFilter = new FilenameFilter() {
91 @Override
92 public boolean accept(File directory, String fileName) {
93 boolean matched = false;
94 File f = new File(String.format("%s/%s",
95 directory.getAbsolutePath(), fileName));
96 matched = f.isDirectory();
97 if (!matched) {
98 for (String s : fileExtensions) {
99 s = String.format(".{0,}\\%s$", s);
100 s = s.toUpperCase(Locale.getDefault());
101 fileName = fileName.toUpperCase(Locale.getDefault());
102 matched = fileName.matches(s);
103 if (matched) {
104 break;
105 }
106 }
107 }
108 return matched;
109 }
110 };
111 return fileNameFilter;
112 }
113
114 }
1 package com.example.alimjan.hello_world;
2
3 /**
4 * Created by alimjan on 7/5/2017.
5 */
6
7 import android.content.Context;
8 import android.content.Intent;
9 import android.graphics.Bitmap;
10 import android.os.Bundle;
11 import android.os.Environment;
12 import android.support.v7.app.AppCompatActivity;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.AdapterView;
16 import android.widget.ArrayAdapter;
17 import android.widget.EditText;
18 import android.widget.LinearLayout;
19 import android.widget.Spinner;
20 import android.widget.TextView;
21 import android.widget.Toast;
22 import android.widget.AdapterView.OnItemSelectedListener;
23
24 import com.example.alimjan.hello_world.Utils.DateUtil;
25 import com.example.alimjan.hello_world.Utils.FileUtil;
26
27
28 public class class_4_3_3 extends AppCompatActivity implements OnClickListener {
29
30 private LinearLayout ll_info;
31 private EditText et_name;
32 private EditText et_age;
33 private EditText et_height;
34 private EditText et_weight;
35 private boolean bMarried = false;
36
37 private String mPath;
38 private TextView tv_path;
39
40 @Override
41 protected void onCreate(Bundle savedInstanceState) {
42 super.onCreate(savedInstanceState);
43 setContentView(R.layout.code_4_3_3);
44 ll_info = (LinearLayout) findViewById(R.id.ll_info);
45 et_name = (EditText) findViewById(R.id.et_name);
46 et_age = (EditText) findViewById(R.id.et_age);
47 et_height = (EditText) findViewById(R.id.et_height);
48 et_weight = (EditText) findViewById(R.id.et_weight);
49 tv_path = (TextView) findViewById(R.id.tv_path);
50 findViewById(R.id.btn_save).setOnClickListener(this);
51
52 ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
53 R.layout.item_select, typeArray);
54 typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
55 Spinner sp_married = (Spinner) findViewById(R.id.sp_married);
56 sp_married.setPrompt("请选择婚姻状况");
57 sp_married.setAdapter(typeAdapter);
58 sp_married.setSelection(0);
59 sp_married.setOnItemSelectedListener(new TypeSelectedListener());
60
61 mPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
62 }
63
64 private String[] typeArray = {"未婚", "已婚"};
65 class TypeSelectedListener implements OnItemSelectedListener {
66 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
67 bMarried = (arg2==0)?false:true;
68 }
69
70 public void onNothingSelected(AdapterView<?> arg0) {
71 }
72 }
73
74 @Override
75 public void onClick(View v) {
76 if (v.getId() == R.id.btn_save) {
77 String name = et_name.getText().toString();
78 String age = et_age.getText().toString();
79 String height = et_height.getText().toString();
80 String weight = et_weight.getText().toString();
81 if (name==null || name.length()<=0) {
82 showToast("请先填写姓名");
83 return;
84 }
85 if (age==null || age.length()<=0) {
86 showToast("请先填写年龄");
87 return;
88 }
89 if (height==null || height.length()<=0) {
90 showToast("请先填写身高");
91 return;
92 }
93 if (weight==null || weight.length()<=0) {
94 showToast("请先填写体重");
95 return;
96 }
97
98 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true) {
99 Bitmap bitmap = ll_info.getDrawingCache();
100 String file_path = mPath + DateUtil.getCurDateStr("") + ".png";
101 FileUtil.saveImage(file_path, bitmap);
102 bitmap.recycle();
103 tv_path.setText("用户注册信息图片的保存路径为:\n"+file_path);
104 showToast("图片已存入SD卡文件");
105 } else {
106 showToast("未发现已挂载的SD卡,请检查");
107 }
108 }
109 }
110
111 @Override
112 protected void onStart() {
113 super.onStart();
114 ll_info.setDrawingCacheEnabled(true);
115 }
116
117 @Override
118 protected void onStop() {
119 super.onStop();
120 ll_info.setDrawingCacheEnabled(false);
121 }
122
123 private void showToast(String desc) {
124 Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
125 }
126
127 public static void startHome(Context mcontext){
128 Intent intent = new Intent(mcontext,class_4_3_3.class);
129 mcontext.startActivity(intent);
130 }
131
132 }
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:focusable="true"
5 android:focusableInTouchMode="true"
6 android:orientation="vertical"
7 android:padding="10dp" >
8
9 <LinearLayout
10 android:id="@+id/ll_info"
11 android:layout_width="match_parent"
12 android:layout_height="wrap_content"
13 android:background="#f9f9f9"
14 android:orientation="vertical" >
15
16 <RelativeLayout
17 android:layout_width="match_parent"
18 android:layout_height="50dp" >
19
20 <TextView
21 android:id="@+id/tv_name"
22 android:layout_width="wrap_content"
23 android:layout_height="match_parent"
24 android:layout_alignParentLeft="true"
25 android:gravity="center"
26 android:text="姓名:"
27 android:textColor="@color/black"
28 android:textSize="17sp" />
29
30 <EditText
31 android:id="@+id/et_name"
32 android:layout_width="match_parent"
33 android:layout_height="match_parent"
34 android:layout_marginBottom="5dp"
35 android:layout_marginTop="5dp"
36 android:layout_toRightOf="@+id/tv_name"
37 android:background="@drawable/editext_selector"
38 android:gravity="left|center"
39 android:hint="请输入姓名"
40 android:inputType="text"
41 android:maxLength="12"
42 android:textColor="@color/black"
43 android:textColorHint="@color/grey"
44 android:textCursorDrawable="@drawable/text_cursor"
45 android:textSize="17sp" />
46 </RelativeLayout>
47
48 <RelativeLayout
49 android:layout_width="match_parent"
50 android:layout_height="50dp" >
51
52 <TextView
53 android:id="@+id/tv_age"
54 android:layout_width="wrap_content"
55 android:layout_height="match_parent"
56 android:layout_alignParentLeft="true"
57 android:gravity="center"
58 android:text="年龄:"
59 android:textColor="@color/black"
60 android:textSize="17sp" />
61
62 <EditText
63 android:id="@+id/et_age"
64 android:layout_width="match_parent"
65 android:layout_height="match_parent"
66 android:layout_marginBottom="5dp"
67 android:layout_marginTop="5dp"
68 android:layout_toRightOf="@+id/tv_age"
69 android:background="@drawable/editext_selector"
70 android:gravity="left|center"
71 android:hint="请输入年龄"
72 android:inputType="number"
73 android:maxLength="2"
74 android:textColor="@color/black"
75 android:textColorHint="@color/grey"
76 android:textCursorDrawable="@drawable/text_cursor"
77 android:textSize="17sp" />
78 </RelativeLayout>
79
80 <RelativeLayout
81 android:layout_width="match_parent"
82 android:layout_height="50dp" >
83
84 <TextView
85 android:id="@+id/tv_height"
86 android:layout_width="wrap_content"
87 android:layout_height="match_parent"
88 android:layout_alignParentLeft="true"
89 android:gravity="center"
90 android:text="身高:"
91 android:textColor="@color/black"
92 android:textSize="17sp" />
93
94 <EditText
95 android:id="@+id/et_height"
96 android:layout_width="match_parent"
97 android:layout_height="match_parent"
98 android:layout_marginBottom="5dp"
99 android:layout_marginTop="5dp"
100 android:layout_toRightOf="@+id/tv_height"
101 android:background="@drawable/editext_selector"
102 android:gravity="left|center"
103 android:hint="请输入身高"
104 android:inputType="number"
105 android:maxLength="3"
106 android:textColor="@color/black"
107 android:textColorHint="@color/grey"
108 android:textCursorDrawable="@drawable/text_cursor"
109 android:textSize="17sp" />
110 </RelativeLayout>
111
112 <RelativeLayout
113 android:layout_width="match_parent"
114 android:layout_height="50dp" >
115
116 <TextView
117 android:id="@+id/tv_weight"
118 android:layout_width="wrap_content"
119 android:layout_height="match_parent"
120 android:layout_alignParentLeft="true"
121 android:gravity="center"
122 android:text="体重:"
123 android:textColor="@color/black"
124 android:textSize="17sp" />
125
126 <EditText
127 android:id="@+id/et_weight"
128 android:layout_width="match_parent"
129 android:layout_height="match_parent"
130 android:layout_marginBottom="5dp"
131 android:layout_marginTop="5dp"
132 android:layout_toRightOf="@+id/tv_weight"
133 android:background="@drawable/editext_selector"
134 android:gravity="left|center"
135 android:hint="请输入体重"
136 android:inputType="numberDecimal"
137 android:maxLength="5"
138 android:textColor="@color/black"
139 android:textColorHint="@color/grey"
140 android:textCursorDrawable="@drawable/text_cursor"
141 android:textSize="17sp" />
142 </RelativeLayout>
143
144 <RelativeLayout
145 android:layout_width="match_parent"
146 android:layout_height="50dp" >
147
148 <TextView
149 android:id="@+id/tv_married"
150 android:layout_width="wrap_content"
151 android:layout_height="match_parent"
152 android:layout_alignParentLeft="true"
153 android:gravity="center"
154 android:text="婚否:"
155 android:textColor="@color/black"
156 android:textSize="17sp" />
157
158 <Spinner
159 android:id="@+id/sp_married"
160 android:layout_width="match_parent"
161 android:layout_height="match_parent"
162 android:layout_toRightOf="@+id/tv_married"
163 android:gravity="left|center"
164 android:spinnerMode="dialog" />
165 </RelativeLayout>
166 </LinearLayout>
167
168 <Button
169 android:id="@+id/btn_save"
170 android:layout_width="match_parent"
171 android:layout_height="wrap_content"
172 android:text="保存图片到SD卡"
173 android:textColor="@color/black"
174 android:textSize="20sp" />
175
176 <TextView
177 android:id="@+id/tv_path"
178 android:layout_width="wrap_content"
179 android:layout_height="match_parent"
180 android:textColor="@color/black"
181 android:textSize="17sp" />
182
183 </LinearLayout>
![]()
1 package com.example.alimjan.hello_world;
2
3 import java.io.File;
4 import java.util.ArrayList;
5
6 /**
7 * Created by alimjan on 7/5/2017.
8 */
9
10 import android.content.Context;
11 import android.content.Intent;
12 import android.graphics.Bitmap;
13 import android.os.Bundle;
14 import android.os.Environment;
15 import android.support.v7.app.AppCompatActivity;
16 import android.util.Log;
17 import android.view.View;
18 import android.view.View.OnClickListener;
19 import android.widget.AdapterView;
20 import android.widget.ArrayAdapter;
21 import android.widget.Spinner;
22 import android.widget.ImageView;
23 import android.widget.Toast;
24 import android.widget.AdapterView.OnItemSelectedListener;
25
26 import com.example.alimjan.hello_world.Utils.FileUtil;
27
28 /**
29 * Created by ouyangshen on 2016/10/1.
30 */
31 public class class_4_3_3_1 extends AppCompatActivity implements OnClickListener {
32
33 private final static String TAG = "ImageReadActivity";
34 private ImageView iv_image;
35 private Spinner sp_file;
36 private String mPath;
37
38 @Override
39 protected void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
41 setContentView(R.layout.code_4_3_3_1);
42 iv_image = (ImageView) findViewById(R.id.iv_image);
43 sp_file = (Spinner) findViewById(R.id.sp_file);
44 findViewById(R.id.btn_delete).setOnClickListener(this);
45 mPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
46 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) == true) {
47 refreshSpinner();
48 } else {
49 showToast("未发现已挂载的SD卡,请检查");
50 }
51 }
52
53 private void refreshSpinner() {
54 ArrayList<File> fileAlllist = FileUtil.getFileList(mPath, new String[]{".png", ".jpg"});
55 if (fileAlllist.size() > 0) {
56 fileArray = new String[fileAlllist.size()];
57 for (int i=0; i<fileAlllist.size(); i++) {
58 fileArray[i] = fileAlllist.get(i).getName();
59 }
60 ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
61 R.layout.item_select, fileArray);
62 typeAdapter.setDropDownViewResource(R.layout.item_dropdown);
63 sp_file.setPrompt("请选择图片文件");
64 sp_file.setAdapter(typeAdapter);
65 sp_file.setSelection(0);
66 sp_file.setOnItemSelectedListener(new FileSelectedListener());
67 } else {
68 fileArray = null;
69 fileArray = new String[1];
70 fileArray[0] = "";
71 ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this,
72 R.layout.item_select, fileArray);
73 sp_file.setPrompt(null);
74 sp_file.setAdapter(typeAdapter);
75 sp_file.setOnItemSelectedListener(null);
76 iv_image.setImageDrawable(null);
77 }
78 }
79
80 private String[] fileArray;
81 class FileSelectedListener implements OnItemSelectedListener {
82 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
83 String file_path = mPath + fileArray[arg2];
84 Bitmap bitmap = FileUtil.openImage(file_path);
85 iv_image.setImageBitmap(bitmap);
86 }
87
88 public void onNothingSelected(AdapterView<?> arg0) {
89 }
90 }
91
92 @Override
93 public void onClick(View v) {
94 if (v.getId() == R.id.btn_delete) {
95 for (int i=0; i<fileArray.length; i++) {
96 String file_path = mPath + fileArray[i];
97 File f = new File(file_path);
98 boolean result = f.delete();
99 if (result != true) {
100 Log.d(TAG, "file_path="+file_path+", delete failed");
101 }
102 }
103 refreshSpinner();
104 showToast("已删除临时目录下的所有图片文件");
105 }
106 }
107
108 private void showToast(String desc) {
109 Toast.makeText(this, desc, Toast.LENGTH_SHORT).show();
110 }
111
112 public static void startHome(Context mcontext){
113 Intent intent = new Intent(mcontext,class_4_3_3_1.class);
114 mcontext.startActivity(intent);
115 }
116
117 }
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:focusable="true"
5 android:focusableInTouchMode="true"
6 android:orientation="vertical"
7 android:padding="10dp" >
8
9 <Button
10 android:id="@+id/btn_delete"
11 android:layout_width="match_parent"
12 android:layout_height="wrap_content"
13 android:text="删除所有图片文件"
14 android:textColor="@color/black"
15 android:textSize="20sp" />
16
17 <RelativeLayout
18 android:layout_width="match_parent"
19 android:layout_height="50dp" >
20
21 <TextView
22 android:id="@+id/tv_file"
23 android:layout_width="wrap_content"
24 android:layout_height="match_parent"
25 android:layout_alignParentLeft="true"
26 android:gravity="center"
27 android:text="文件名:"
28 android:textColor="@color/black"
29 android:textSize="17sp" />
30
31 <Spinner
32 android:id="@+id/sp_file"
33 android:layout_width="match_parent"
34 android:layout_height="match_parent"
35 android:layout_toRightOf="@+id/tv_file"
36 android:gravity="left|center"
37 android:spinnerMode="dialog" />
38 </RelativeLayout>
39
40 <ImageView
41 android:id="@+id/iv_image"
42 android:layout_width="match_parent"
43 android:layout_height="wrap_content"
44 android:scaleType="fitCenter" />
45
46 </LinearLayout>
![]()