1异步内部类
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
if(msg.obj!= null && listener != null){
listener.onResult(msg.obj.toString());
}
}
};
其中使用的正是内部类 ·匿名内部类不能有构造方法。 ·匿名内部类不能定义任何静态成员、静态方法。 ·匿名内部类不能是public,protected,private,static。 ·只能创建匿名内部类的一个实例。 ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
2字节流与字符流的区别(5.1)
java.io.Reader 和 java.io.InputStream组成了Java 输入类。
Reader 用于读入16位字符,也就是Unicode编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。
Reader支持16位的Unicode字符输出,
InputStream支持8位的字符输出。
Reader和InputStream分别是I/O库提供的两套平行独立的等级机构,
1byte = 8bits
InputStream、OutputStream是用来处理8位元的流,
Reader、Writer是用来处理16位元的流。
而在JAVA语言中,byte类型是8位的,char类型是16位的,所以在处理中文的时候需要用Reader和Writer。
值得说明的是,在这两种等级机构下,还有一道桥梁InputStreamReader、OutputStreamWriter负责进行InputStream到Reader的适配和由OutputStream到Writer的适配。
stream结尾都是字节流,reader和writer结尾都是字符流 两者的区别就是读写的时候一个是按字节读写,一个是按字符。 实际使用通常差不多。 在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。
//服务器要获得请求,就创建一个输入流ins
InputStream ins = client.getInputStream();
/*
* 1,将一个字符串转换成一个流:用StringReader;列:String string =”adkljfkaeio“;
StringReader str=newStringReader(string);
* 2,将一个字节流转换成一个字符流对象,通过StringReader();
* */
//将InputStream转换成Reader
InputStreamReader insReader=new InputStreamReader(ins);
//对ins进行封装,封装成BufferedReader
BufferedReader reader=new BufferedReader(insReader);
String string =“adkljfkaeio”;
StringReader str=new StringReader(string);
3 Main()方法是一个静态方法,要调用方法就要创建本类的对象
4RadioGroup与RadioButton配合完成导航设置
<FrameLayout
android:id=“@ id/contaner”
android:layout_width=“match_parent”
android:layout_height=“0dip”
android:layout_weight=“1.0”/>
<RadioGroup
android:id=“@ id/nev_group”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:orientation=“horizontal”
android:padding=“10dip”
android:background=“@drawable/home_page_bottom_bg”
>
<RadioButton
android:id=“@ id/homepage”
android:layout_width=“0dip”
android:layout_height=“wrap_content”
android:layout_weight=“1.0”
android:text=“@string/nev_homepage”
android:textSize=“@dimen/nev_textsize”
android:button=“@null”
android:gravity=“center”
android:background=“@drawable/nev_radio_bg”
android:checked=“true”
/>
<RadioButton
android:id=“@ id/pande”
android:layout_width=“0dip”
android:layout_height=“wrap_content”
android:layout_weight=“1.0”
android:text=“@string/nev_bande”
android:textSize=“@dimen/nev_textsize”
android:button=“@null”
android:gravity=“center”
android:background=“@drawable/nev_radio_bg”/>
RadioGroup的点击选择
代码语言:javascript复制public void onCreate(Bundle savedInstanceState) {
Jetbrains全家桶1年46,售后保障稳定
代码语言:javascript复制 super.onCreate(savedInstanceState);
代码语言:javascript复制 setContentView(R.layout.main);
代码语言:javascript复制
代码语言:javascript复制 // 取得 TextView、RadioGroup、RadioButton对象
代码语言:javascript复制 mTextView1 = (TextView) findViewById(R.id.myTextView);
代码语言:javascript复制 mRadioGroup1 = (RadioGroup) findViewById(R.id.myRadioGroup);
代码语言:javascript复制 mRadio1 = (RadioButton) findViewById(R.id.myRadioButton1);
代码语言:javascript复制 mRadio2 = (RadioButton) findViewById(R.id.myRadioButton2);
代码语言:javascript复制
代码语言:javascript复制 // RadioGroup用OnCheckedChangeListener来运行
代码语言:javascript复制 mRadioGroup1.setOnCheckedChangeListener(mChangeRadio);
代码语言:javascript复制 }
代码语言:javascript复制
代码语言:javascript复制 private RadioGroup.OnCheckedChangeListener mChangeRadio = new RadioGroup.OnCheckedChangeListener() {
代码语言:javascript复制 @Override
代码语言:javascript复制 public void onCheckedChanged(RadioGroup group, int checkedId) {
代码语言:javascript复制 // TODO Auto-generated method stub
代码语言:javascript复制 if (checkedId == mRadio1.getId()) {
代码语言:javascript复制 // 把mRadio1的内容传到mTextView1
代码语言:javascript复制 mTextView1.setText(mRadio1.getText());
代码语言:javascript复制 } else if (checkedId == mRadio2.getId()) {
代码语言:javascript复制 // 把mRadio2的内容传到mTextView1
代码语言:javascript复制 mTextView1.setText(mRadio2.getText());
代码语言:javascript复制 }
代码语言:javascript复制 }
代码语言:javascript复制 };
4 设置不同手机的文子大小
1,建一个values-480×320的文件夹 然后配置dimens.xml文件中的<dimen name=”nev_textsize”>15sp</dimen> 就使得在480×320的手机上文字大小就是15sp了
5控件与控件
距离设置margintop(控件与控件)padding(控件与文本)
6 5-28 页面跳转
Handler handler = new Handler(); handler.postDelayed(new Runnable() { // @Override public void run() { Intent intent = new Intent(loginpage.this,MainActivity.class); loginpage.this.startActivity(intent); loginpage.this.finish(); } },3000);
注:MainActivity必须在AdroidMainfest注册
如:<activity android:name=”.MainActivity”></activity>
数据传递 Fragment<–>Activaity
去–》 Intent intent = newIntent(activity,Scan_OkActivity.class);
ScanInfoinfo=new ScanInfo();
info.setData_ok(data_ok);
info.setData_unknown(data_unknown);
info.setData_exception(data_exception);
Bundlebundle=new Bundle();
bundle.putSerializable(“info”,info);
intent.putExtra(“bundle”,bundle);
startActivityForResult(intent,11);
–》接
info=newScanInfo();
// info=(ScanInfo)getArguments().getSerializable(“info”);
info=(ScanInfo)getIntent().getBundleExtra(“bundle”).getSerializable(“info”);
data_ok=info.getData_ok();
回《–
publicvoid onActivityResult(int requestCode, int resultCode, Intent data2) {
if(resultCode== activity.RESULT_OK&&requestCode==11){ //判断回调
Bundlebundle = data2.getExtras();
ScanInfoinfo1=new ScanInfo();
info1=(ScanInfo)data2.getBundleExtra(“bundle”).getSerializable(“info1”);
data_ok=info1.getData_ok();
data_unknown=info1.getData_unknown();
data_exception=info1.getData_exception();
}
}
Activity与Activity简单传递
发送
intent.putExtra(“testIntent”, “123”);
接受
Intent intent=getIntent();
String id=intent.getStringExtra(“testIntent“);
或者
String id=getIntent().getStringExtra(“testIntent“);
Fragment与Fragemt之间数据传递
发送–>
1. Fragment2 fragment = new Fragment2();
2. Bundle args = new Bundle();
3. args.putString(“param”, text);
4. fragment.setArguments(args);
5. 接收<–
if (getArguments() != null) {
String mParam1 = getArguments().getString(“param”);
}
a、保存数据
//暂停:onStart()->onResume()->onPause() @Override protected void onPause(){ super.onPause(); Log.e(“Lifecycle_Activity1″,”onPause()”); //把数据保存到类似于Session之类的存储集合里面 SharedPreferences.EditorsaveData = getPreferences(“userType”, Context.MODE_PRIVATE).edit(); saveData.putString(“value”,et_string.getText().toString()); saveData.commit(); }
b、提取数据
//重启:onStart()->onResume() @Override protected void onResume(){ super.onResume(); Log.e(“Lifecycle_Activity1″,”onResume()”); //从共享数据存储对象中获取所需的数据 SharedPreferences getData =getPreferences(“userType”, Context.MODE_PRIVATE); String value =getData.getString(“value”, null); if(value != null){ et_string.setText(value); } }
Handler 的多线程
http://blog.sina.com.cn/s/blog_6afeac500100y14t.html
public classchapter8_4 extends Activity {
private String TAG = “chapter8_3”; private Button btnEnd; private TextView labelTimer; private Thread clockThread; private boolean isRunning = true; private Handler handler; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); btnEnd = (Button)findViewById(R.id.btnEnd); btnEnd.setOnClickListener(new OnClickListener(){ @Override public voidonClick(View v) { isRunning= false; } }); handler = new Handler(){ @Override public voidhandleMessage(Message msg) { switch(msg.what) { case 0: labelTimer.setText(“逝去了 “ msg.obj “秒”); } } }; labelTimer = (TextView)findViewById(R.id.labelTimer); clockThread = new Thread(new Runnable(){ @Override public voidrun() { int timer = 0; while (isRunning){ try{ Thread.currentThread().sleep(1000);
timer ; Message msg = new Message(); msg.obj = timer; msg.what = 0;
handler.sendMessage(msg); } } } }); clockThread.start();
private HandlerresultHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
String result = “”;
if(msg !=null && msg.obj !=null){
result = msg.obj.toString();
}
System.out.println(“服务器返回结果:“ result);
if(listener !=null){
listener.onResult(result);
}
}
}; }
Theadthead= new Runnable() { @Override public voidrun() { Message msg = resultHandler.obtainMessage();
msg.obj = result;
resultHandler.sendMessage(msg);
}
});
75-28 SharedPreferences详解
我们在开发软件的时候,常需要向用户提供软件参数设置功能,Android平台给我们提供了一个SharedPreferences类,它是一个轻量级应用程序内部轻量级的存储方案,特别适合用于保存软件配置参数,比如boolean,int,float,long,String等数据.使用SharedPreferences保存数据,其实质是采用了xml文件存放数据,路径为:/data/data/<package name>/shared_prefs.
获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
SharedPreferences的四种操作模式:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
将数据保存至SharedPreferences:
SharedPreferencespreferences=getSharedPreferences(“user”,Context.MODE_PRIVATE);
Editor editor=preferences.edit();
String name=”xixi”;
String age=”22″;
editor.putString(“name”,name);
editor.putString(“age”, age);
editor.commit();
从SharedPreferences获取数据:
SharedPreferencespreferences=getSharedPreferences(“user”, Context.MODE_PRIVATE);
Stringname=preferences.getString(“name”, “defaultname”);
Stringage=preferences.getString(“age”, “0”);
86-11随机生成字符串
public static String getRandomKHDH() throws IOException,JSONException { // length表示生成字符串的长度
String base= “abcdefghijklmnopqrstuvwxyz0123456789”;
Randomrandom = new Random();
StringBuffersb = new StringBuffer();
for (int i =0; i < 8; i ) {
intnumber = random.nextInt(base.length());
sb.append(base.charAt(number));
}
returnsb.toString();
}
96-11检验网络连接并toast提示
/** * 检验网络连接 并toast提示 * * @return */ public static boolean note_Intent2(Context context) { ConnectivityManager con = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkinfo = con.getActiveNetworkInfo(); if (networkinfo == null || !networkinfo.isAvailable()) { // 当前网络不可用 Toast.makeText(context.getApplicationContext(), “请先连接Internet!”, Toast.LENGTH_SHORT).show(); return false; } boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI) .isConnectedOrConnecting(); if (!wifi) { // 提示使用wifi Toast.makeText(context.getApplicationContext(), “建议您使用WIFI以减少流量!”, Toast.LENGTH_SHORT).show(); } return true;
}
/** * 解析 服务器 返回的带特殊符号分割的数据 (两层封装解析) * * @param str * @return */ public static ArrayList<String[]> analysisStringTwo(String str) { ArrayList<String[]> list = new ArrayList<String[]>();
String[] strOne = str.split(“﹌”); for (int i = 0; i < strOne.length; i ) { String[] StrTwo = strOne[i].split(“§”);
list.add(StrTwo); }
return list; }
/** * 验证是否为合法手机号码 * * @param mobiles * @return */ public static boolean isMobileNO(String mobiles) { Pattern p = Pattern.compile(“^(13|15|18) \d{9}$”); Matcher m = p.matcher(mobiles); return m.matches(); }
/** * 获取系统当前时间 * * @return */ public static String getTime() { SimpleDateFormat sDateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm”); String date = sDateFormat.format(new java.util.Date()); return date; }
/** * 异步加载图片类 */ public static void LoadImage(ImageView img, String path, Context context) { // 异步加载图片资源 MyAsyncImage async = new MyAsyncImage(img, context); // 执行异步加载,并把图片的路径传送过去 async.execute(path); }
/** * 异步加载图片类 */ public static void LoadImage(ImageView img, String path) { // 异步加载图片资源 MyAsyncImage async = new MyAsyncImage(img); // 执行异步加载,并把图片的路径传送过去 async.execute(path); }
/** * Http GET请求获取InputStream对象 */ public static InputStream getImageStream(String path) throws Exception { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3 * 1000); conn.setRequestMethod(“GET”); // System.out.println(“有数据?”); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { // System.out.println(“有”); return conn.getInputStream(); } // System.out.println(“没有”); return null; }
/** * 获取 Bitmap 格式的图片 * * @param imagePate * 图片路径 * @return Bitmap */ public static Bitmap getImageBitmap(String imagePate) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 0; Bitmap bm = BitmapFactory.decodeFile(imagePate, options); return bm; }
android:screenOrientation=”landscape”是限制此页面横屏显示, android:screenOrientation=”portrait”是限制此页面数竖屏显示。
//拨打电话
Intent intent=newIntent(Intent.ACTION_CALL,Uri.parse(“tel:02828286411”));
context.startActivity(intent);
<uses-permissionandroid:name=”android.permission.CALL_PHONE”/>
10 7-28Activity完整的生命周期
Activity的作用: 起显示作用,他是用来和用户交互的。也是一个view的容器
1 完整的生命周期: onCreate() –> onStart() –> onResume() activiyt已经正常显示 点击回退键 onPause() –> onStop() –> onDetroy()
2 可视的生命周期 onCreate() –> onStart() –> onResume() activiyt已经正常显示 打开一个activity。该activity完全覆盖上一个activity onPause() —> onStop() 点击回退键 onRestart() –> onStart() —> onResume() 点击回退键 onPause() –> onStop() –> onDetroy()
3 android:theme=”@android:style/Theme.Dialog” 就可以把activity变成对话框的效果 onCreate() –> onStart() –> onResume() activiyt已经正常显示 打开一个activity。该activity没有完全覆盖上一个activity onPause() 点击回退键 onResume()
EditText 让其失去焦点,有焦点但不弹出输入键,内容改变监听
<EditText
android:focusable=”false”/>
但让其失去焦点但可以输入则 在其父控件加上android:focusable=”true” android:focusableInTouchMode=”true”
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:orientation=”horizontal”
android:focusable=”true”
android:focusableInTouchMode=”true”>
<Spinner
android:id=”@ id/ciyt04″
android:layout_width=”0dip”
android:layout_weight=”1.3″
android:layout_height=”wrap_content”
android:entries=”@array/condition4″
android:background=”@drawable/spinter_bac_img”
/>
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”金额:”
android:layout_marginLeft=”8dip”/>
<EditText
android:id=”@ id/money”
android:layout_width=”0dip”
android:layout_height=”32dip”
android:layout_weight=”2.0″
android:background=”@drawable/edit_selector”
android:padding=”3dip”
android:textColor=”@color/login_text_color”
android:textSize=”@dimen/textSize”
android:maxLines=”1″
android:inputType=”numberDecimal”
/>
</LinearLayout>
设置可以编辑和不可编辑状态
在xml中设置Android:editable=”false”
然后尝试使用editText.setFocusable(false);和editText.setEnabled(false);设置不可编辑状态;editText.setFocusable(true);和 editText.setEnabled(true);设置可编辑状态。
发现在editText.setFocusable(false);和editText.setEnabled(false);时不可编辑,但是editText.setFocusable(true);和 editText.setEnabled(true);也是不可编辑的,感觉这个时候EditText控件高亮度了,但是没有焦点
3、最后尝试使用editText.setFocusable(false);和editText.setFocusableInTouchMode(false);设置不可编辑状态;editText.setFocusableInTouchMode(true);editText.setFocusable(true);editText.requestFocus();设置可编辑状态
(有焦点但不显示输入盘)
在Androidmianfest.xml中加<Activity android:windowSoftInputMode=”stateHidden|adjustResize”
(EditeView的内容改变监听) .
et=(EditText) findViewById(R.id.et);
et.addTextChangedListener(watcher);
TextWatcher watcher=new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,int before, int count) {
System.out.println(“onTextChanged 中 s=” s ” start=” start ” before=” before ” count=” count);
}
@Override
public void beforeTextChanged(CharSequence s, int start,int count,
int after) {
System.out.println(“beforeTextChanged 中 s=” s ” start=” start ” count=” count);
}
@Override
public void afterTextChanged(Editable s) {
System.out.println(“afterTextChanged 中 s=” s);
}
};
(光标显示)
光标移到编辑框最后一行
tvNum.setSelection(tvNum.getText().length());
EditText自定义输入内容
其实有两种方案:
1.在xml:EditText设置属性—- Android:digis=”ABCDE555555&&&&&” ABCDE555555&&&&&”是你的限制规则。 例如:android:digits=”0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ” 规则是只能输入英文字母(小写)和数字
2.EditText,TextView只能输入字母加数字,可在View空间后面加上监听器,如下
tvPassword.addTextChangedListener(newTextWatcher() {
@Override
public voidonTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public voidbeforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public voidafterTextChanged(Editable edt) {
try {
String temp = edt.toString();
String tem =temp.substring(temp.length()-1, temp.length());
char[] temC =tem.toCharArray();
int mid = temC[0];
if(mid>=48&&mid<=57){//数字
return;
}
if(mid>=65&&mid<=90){//大写字母
return;
}
if(mid>97&&mid<=122){//小写字母
return;
}
edt.delete(temp.length()-1,temp.length());
} catch (Exception e) {
// TODO: handle exception
}
}
});
1.EditText,TextView只能输入两位小数,先在XML文件里加上输入性:android:numeric=”integer”//设置只能输入整数,如果是小数则是:decimal
然后在View空间后面加上监听器,如下
EditText txtInput = (EditText)findViewById(R.id.txtInput);
txtInput.addTextChangedListener(newTextWatcher()
{
public voidafterTextChanged(Editable edt)
{
String temp = edt.toString();
int posDot =temp.indexOf(“.”);
if (posDot <= 0) return;
if (temp.length() – posDot – 1> 2)
{
edt.delete(posDot 3, posDot 4);
}
}
public voidbeforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
public voidonTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
});
android:layout_gravity=”center_vertical”//设置控件显示的位置:默认top,这里居中显示,还有bottom
android:hint=”请输入数字!“//设置显示在空间上的提示信息
android:numeric=”integer”//设置只能输入整数,如果是小数则是:decimal
android:maxLength=”8″ //限制输入长度为8
设置光标的颜色 android:textCursorDrawable=”@null”
修改RadioButton的图片
Resources res = TabTest.this.getResources();
Drawable myImage =res.getDrawable(R.drawable.home);
myImage.setBounds(1, 1, 100, 100);
button.setCompoundDrawables(null, myImage, null, null);
MyEclipse修改项目名称后,部署到tomcat问题 http://blog.csdn.net/dr_lf/article/details/7533563
要在eclipse里面改下,光把项目重命名是不成的。
工程名–右键–Properties–MyEclipse–Web–
把Web Context-root的名字给改了
ExpandableListView
但值得简单说下的是 android:cacheColorHint=”#00000000″,这个设置可以去除拖动view时背景变成黑色的效果
android:listSelector=”#00000000″ ,可以去除选中时的黄色底色
Style的Diogl样式
<!– 透明 无边框 对话框 –>
<stylename=”Translucent_NoTitle”parent=”android:style/Theme.Dialog”>
<itemname=”android:windowNoTitle”>true</item>//对话框无标题
<itemname=”android:windowBackground”>@android:color/transparent</item>//此对话框的背景
<itemname=”android:windowFrame”>@null</item>Dialog的windowFrame框为无
<itemname=”android:windowIsFloating”>true</item>//对话框是否浮动在Activity上
<itemname=”android:windowContentOverlay”>@null</item>//对话框是否有遮盖
<itemname=”android:backgroundDimEnabled”>false</item>: 背景是否模糊显示
</style>
字符串剪切
JSONObjectitem =new JSONObject(message);
Stringabc=item.getString(“description”);
Utils.orderid=abc.substring(0,abc.indexOf(“$”));
Stringaaa=abc.substring(abc.indexOf(“$”) 1);
Utils.description=aaa.substring(0,aaa.indexOf(“$”));
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏,必须加到setContext()之前
数据传递同上 Fragment<–>Activaity
去–》 Intent intent = newIntent(activity,Scan_OkActivity.class);
ScanInfo info=newScanInfo();
info.setData_ok(data_ok);
info.setData_unknown(data_unknown);
info.setData_exception(data_exception);
Bundle bundle=newBundle();
bundle.putSerializable(“info”,info);
intent.putExtra(“bundle”,bundle);
startActivityForResult(intent,11);
–》接
info=new ScanInfo();
/// info=(ScanInfo)getArguments().getSerializable(“info”);
info=(ScanInfo)getIntent().getBundleExtra(“bundle”).getSerializable(“info”);
data_ok=info.getData_ok();
回《–
public voidonActivityResult(int requestCode, int resultCode, Intent data2) {
if(resultCode ==activity.RESULT_OK&&requestCode==11){ //判断回调
Bundle bundle =data2.getExtras();
ScanInfo info1=newScanInfo();
info1=(ScanInfo)data2.getBundleExtra(“bundle”).getSerializable(“info1”);
data_ok=info1.getData_ok();
data_unknown=info1.getData_unknown();
data_exception=info1.getData_exception();
}
}
Activity跳转后数据返回
private void jump2Activiy2() {
02.
03.Bundle bundle = new Bundle();
04.bundle.putString(“strSex”, strSex);
05.bundle.putDouble(“douHeight”, douHeight);
06.Intent intent = new Intent();
07.intent.setClass(MainActivity.this, TwoActivity.class);
08.intent.putExtra(“bundle”, bundle);
09.startActivityForResult(intent, 0);
10.}
private void jump2Activiy1() {
02.
03.Intent intent2 = new Intent();
04.intent2.setClass(TwoActivity.this, MainActivity.class);
05.Bundle bundle2 = new Bundle();
06.bundle2.putString(“strResult”, strResult);
07.intent2.putExtra(“bundle2”, bundle2);
08.setResult(0, intent2);
09.TwoActivity.this.finish();
10.}
@Override
02.protected void onActivityResult(int requestCode, int resultCode, Intentdata) {
03.if (0 == requestCode) {
04.if (0 == resultCode) {
05.
06.Bundle bundle2 = data.getBundleExtra(“bundle2”);
07.String strFromAct2 = bundle2.getString(“strResult”);
08.txtFromAct2.setText(strFromAct2);
09.}
10.
11.}
12.super.onActivityResult(requestCode,resultCode, data);
13.}
Spinner的应用
Spinner abc=(Spinner) findViewById(R.id.ciyt);
String text02=(String)abc.getSelectedItem();
final String arr[]=new String[]{ “1”,“2”, “3” };
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arr);
spinner.setAdapter(arrayAdapter);
spinner.setSelection(2,true);//设置spinner被选择的位置
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
publicvoid onItemSelected(AdapterView<?> parent, View view,
int position,long id) {
Spinner spinner=(Spinner)parent;
String getStr=(String)spinner.getItemAtPosition(position);
SharedPreferences preference = activity.getSharedPreferences(
“userType”, Context.MODE_PRIVATE);
Editoreditor = preference.edit();
editor.putString(“usertype”, getStr);
editor.commit();// 把数据提交会文件
}
@Override
publicvoid onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
//给字加下划线
// l_register.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
// l_findpwd.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
// settexttype();//设置字体
设置整体无标题和无信息栏
android:theme=”@android:style/Theme.Light.NoTitleBar.Fullscreen”
设置信息栏的去掉
代码语言:javascript复制this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏
获取随机数字
Random random = newRandom();
longlon =random.nextInt(10000);
Android4.0以上AlertDialog在触摸对话框边缘外部,对话框消失
可以设置这么一条属性,当然必须先AlertDialog.Builder.create()之后才能调用这两个方法
方法一:
setCanceledOnTouchOutside(false);调用这个方法时,按对话框以外的地方不起作用。按返回键还起作用
方法二:
setCanceleable(false);调用这个方法时,按对话框以外的地方不起作用。按返回键也不起作用
listView的属性
<ListView
android:id=“@ id/list_driver_negotiateroom”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:divider=“@color/text_gray”
android:scrollbars=“none”>
</ListView>
listview如何显示最后一行数据
listView.setSelection(adapter.getCount());
listview去掉分割线
设置android:divider=”@null”
android:divider=”#00000000″
#00000000后面两个零表示透明
.setDividerHeight(0)高度设为0
返回键的监听
/**
*监听Back键按下事件,方法1:
*注意:
*super.onBackPressed()会自动调用finish()方法,关闭
*当前Activity.
*若要屏蔽Back键盘,注释该行代码即可
*/
@Override
publicvoid onBackPressed() {
super.onBackPressed();
System.out.println(“按下了back键 onBackPressed()”);
}
/**
*监听Back键按下事件,方法2:
*注意:
*返回值表示:是否能完全处理该事件
*在此处返回false,所以会继续传播该事件.
*在具体项目中此处的返回值视情况而定.
*/
@Override
publicboolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode == KeyEvent.KEYCODE_BACK)) {
System.out.println(“按下了back键 onKeyDown()”);
returnfalse;
}else{
returnsuper.onKeyDown(keyCode, event);
}
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
System.out.println(“执行 onDestroy()”);
}
获取sdcar的路径
public static String getSDPath() {
File sdDir = null;
boolean sdCardExist =Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED);//判断sd卡是否存在
if (sdCardExist) {
sdDir =Environment.getExternalStorageDirectory();//获取跟目录
}
return sdDir.toString();
}
获取Bitmap格式的图片
public static Bitmap getImageBitmap(StringimagePate) {
BitmapFactory.Options options =new BitmapFactory.Options();
options.inSampleSize = 5;///图片宽高都为原来的五分之一,即图片为原来的二十五分之一
Bitmap bm =BitmapFactory.decodeFile(imagePate, options);
return bm;
}
BitMap 获取本地BitMap图片对象
第一种
1. //得到Resources对象
2. Resources r = this.getContext().getResources();
3. //以数据流的方式读取资源
4. Inputstream is = r.openRawResource(R.drawable.my_background_image);
5. BitmapDrawable bmpDraw = new BitmapDrawable(is);
6. Bitmap bmp = bmpDraw.getBitmap();
第二种
1. InputStream is = getResources().openRawResource(R.drawable.icon);
2. Bitmap mBitmap = BitmapFactory.decodeStream(is);
3. Paint mPaint = new Paint();
4. canvas.drawBitmap(mBitmap, 40, 40, mPaint);
ivInfo.setImageBitmap(mBitmap);
获取本地时间
SimpleDateFormat dataformat=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String mTime=dataformat.format(new Date());
简析分解数据
public static ArrayList<String[]>analysisStringTwo(String str) {
ArrayList<String[]> list =new ArrayList<String[]>();
String[] strOne = str.split(“﹌“);
for (int i = 0; i <strOne.length; i ) {
String[] StrTwo =strOne[i].split(“§“);
list.add(StrTwo);
}
return list;
}
检验网络连接 并toast提示
public static boolean note_Intent(Contextcontext) {
ConnectivityManager con = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkinfo = con.getActiveNetworkInfo();
if (networkinfo == null || !networkinfo.isAvailable()) {
return false;
}
return true;
}
MyEclipse修改项目名称后,部署到tomcat问题 http://blog.csdn.net/dr_lf/article/details/7533563
要在eclipse里面改下,光把项目重命名是不成的。
工程名–右键–Properties–MyEclipse–Web–
把WebContext-root的名字给改了
修改RadioButton的图片
Resources res = TabTest.this.getResources();
Drawable myImage =res.getDrawable(R.drawable.home);
myImage.setBounds(1, 1, 100, 100);
button.setCompoundDrawables(null, myImage,null, null);
//给字加下划线
// l_register.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
// l_findpwd.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
// settexttype();//设置字体
字符串剪切
JSONObject item =newJSONObject(message);
String abc=item.getString(“description”);
Utils.orderid=abc.substring(0, abc.indexOf(“$”));
String aaa=abc.substring(abc.indexOf(“$”) 1);
Utils.description=aaa.substring(0,aaa.indexOf(“$”));
JSON解析
JSONObject item =new JSONObject(message);
设置ListView的高度
private void setListHight(){
if(mListView ==null) return;
// ListAdapter listAdapter =listView.getAdapter();
if (adapter ==null) {
// pre-condition
return;
}
//设置ListView的高度
int totalHeight = 0;
for (inti = 0; i < adapter.getCount(); i ) {
View listItem = adapter.getView(i, null,mListView);
listItem.measure(0, 0);
totalHeight = listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params =mListView.getLayoutParams();
params.height =totalHeight (mListView.getDividerHeight()* (adapter.getCount() – 1));
mListView.setLayoutParams(params);
}
设置地图缩放的大小
maxZoomLevel = mBaiduMap.getMaxZoomLevel();
mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(maxZoomLevel));
得到屏幕的高宽
WindowManager wm = (WindowManager)getSystemService(context.WINDOW_SERVICE);
intwidth = wm.getDefaultDisplay().getWidth();
int height =wm.getDefaultDisplay().getHeight();
得到屏幕的像素,以便调整控件的大小
//要调整的控件
RelativeLayout layout = (RelativeLayout)findViewById(R.id.layout);
//new一个DissplayMetrics对象
DisplayMetricsoutMetrics = new DisplayMetrics();
//将屏幕的像素等放进DissplayMetrics对象里
context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
//得到一个LayoutParams 参数对象
FrameLayout.LayoutParams params = newFrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
//将参数对象的宽度设为屏幕像素-40像素
params.width= outMetrics.widthPixels – 40;
//将参数对象赋值给控件
layout.setLayoutParams(params);
设置Dialog显示位置
//获取dialog窗口对象
Window mwindow = dialog.getWindow();
LayoutParams attributes =mwindow.getAttributes();//获取dialog的窗口特征,属性
// attributes.alpha=0.35f;// 透明度的范围为:0.0f-1.0f;0.0f表示完全透明,1.0f表示完全不透明(系统默认的就是这个)。
//设置对话框在屏幕的底部显示,当然还有上下左右,任意位置
//mWindow.setGravity(Gravity.LEFT);
// mWindow.setGravity(Gravity.BOTTOM);
// 这里是设置偏移量,这里的x,y并不是相对于屏幕的绝对坐标,而是相对于对话框在中心位置(默认的对话框一般显示在屏幕的中心)而言的
attributes.x=-30;
attributes.y=-150;
// 设置Window的属性
mwindow.setAttributes(attributes);
dialog.show();
设置按钮点击改变背景图片
<?xmlversion=“1.0”encoding=“utf-8”?>
<selectorxmlns:android=“http://schemas.android.com/apk/res/android”>
<itemandroid:drawable=“@drawable/task_p”android:state_checked=“true”></item>
<itemandroid:drawable=“@drawable/task”android:state_checked=“false”></item>
</selector>
下载显示图片
ImageView picture_title=(ImageView) convertView.findViewById(R.id.picture_title);
ImageLoader.getInstance().displayImage(data.get(position).get(“URL”),
picture_title);
(横屏或竖屏)Android强制设置横屏或竖屏
来源 http://2960629.blog.51cto.com/2950629/701227
代码语言:javascript复制全屏 requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
横屏
按照下面代码示例修改Activity的onResume方法
@Override
protected voidonResume() {
/**
* 设置为横屏
*/
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
super.onResume();
}
或者在配置文件中对Activity节点添加android:screenOrientation属性(landscape是横向,portrait是纵向)
android:launchMode=”singleTask”android:screenOrientation=”portrait”>
要设置成竖屏设置成SCREEN_ORIENTATION_PORTRAIT
常亮
view.setKeepScreenOn(true)
SQL语句(增删改查)
增 INSERT INTO tab_comp VALUES(item1, price1, qty1), (item2, price2, qty2), (item3, price3, qty3);
INSERT INTO tab_comp(item1, price1, qty1) SELECT item1, price1,qty1 FROM tab_cc;
删 DELETE FROM 表名称 WHERE 列名称 = 值
DELETE FROM tb_move_data WHEREid >100
改 update tb_move_station set s_spare1 =’2025-2-2′, s_lon =’130.22222′, s_lat =’30.0000′ where s_code = ‘8888’
查 select s_code as code,s_name as name fromtb_move_station where s_code = ‘” userName ”‘”
CREATE TABLE users(idINT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), ageINT);
4INSERTINTO users(NAME, age) VALUES(‘孤傲苍狼’,27);
5INSERTINTO users(NAME, age) VALUES(‘白虎神皇’,27);
Web ProjectWeb Service Project和Java Project的区别?
代码语言:javascript复制1、当你是web应用时,比如说要建个网站,需要发布到服务器时,应该要建Web Project
2、当你是做分布式系统时,也就是你做的只是一个服务,对外发布也只是一个服务的时候,需要建立Web Services Project(不理解可以先研究下webservices)
3、当你仅仅是需要JDK来运行一些本地代码的时候,只需要建Java Project就可以啦饿
Dialog创建简述
1android系统自带的Dialog
http://blog.csdn.net/z1395129433/article/details/21016601/
通过new一个AlertDialog.Builder对象,构造一个具有Title(setTitle)、message(setMessage)和确认按钮PositiveButton(setPositiveButton)的对话窗口。
其中方法的定义为:
setTitle设置标题 setIcon设置对话框图标 setMessage简单消息框 setItems设置要在对话框中显示的项目列表 setView设置自定义的对话框样式 setSingleChoiceItems设置对话框显示一个单选框 setMultiChoiceItems设置对话框显示一系列的复选框 setPositiveButton设置对话框显示一个确定的按钮 setNeutralButton设置对话框显示一个退出按钮 setNegativeButton 设置对话框显示一个取消按钮 create创建一个AlertDialog对话框 show显示对话框
1显示单个按钮
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(“提示信息“)
.setMessage(“无法连接到摄像头,请确保手机已经连接到摄像头所在的wifi热点“)
.setNegativeButton(“知道了“,
new DialogInterface.OnClickListener() {
@Override
publicvoid onClick(DialogInterface dialog,
int which) {
}
}).create();
dialog.setCanceledOnTouchOutside(false);
dialog.show();
2 两个按钮
- new AlertDialog.Builder(activity).setTitle(“离开“)
- .setMessage(“真要啊“).setNegativeButton(“取消“, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- }
- }).setPositiveButton(“确定“, new DialogInterface.OnClickListener(){
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- finish();
- }
- }).show();
2 自定义Dialog
先创建一个类(MyDialog)继承 Dialog ,创建空的构造函数和含有(Activity context,inttheme等参数) 然后重写OnCteat();方法 ,setContentView(R.Layout.**)将布局View放进去,在改类中就可以对按键进行监听,也可以写个方法,让Activity 对象来重写过去。
maplocationDialog = new MapLocationDialog(context, R.style.Translucent_NoTitle){
@Override
public void locationTimeClick(String time) {
if (maplocationDialog !=null && maplocationDialog.isShowing()) {
maplocationDialog.dismiss();
}
((MainPage)getActivity()).openService(time);
location_start.setText(“定位/关“);
LoginInfo.locationState =location_start.getText().toString();
}
};
maplocationDialog.show();
public class MapLocationDialog extends Dialog{
private Activitycontext;
private EditTextlocationtime;
/**
* @param context
*/
public MapLocationDialog(Activity context) {
super(context);
this.context=context;
}
public MapLocationDialog(Activity context,int theme) {
super(context,theme);
this.context=context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maplocationdialog);
DisplayMetricsoutMetrics = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
View view = findViewById(R.id.maplayout);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(-1,-2);
params.width = outMetrics.widthPixels – 40;
view.setLayoutParams(params);
init();
}
private void init(){
locationtime=(EditText) findViewById(R.id.locationtime);
findViewById(R.id.conmit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Stringtime=locationtime.getText().toString().trim();
if(time==null||“”.equals(time)){
Toast.makeText(context,“请输入定位间隔时间“, 1500).show();
return;
}
locationTimeClick(time);
}
});
findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
public void locationTimeClick(String time){
}
}
获取当前时间(time)
SimpleDateFormat sDateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm”);
Stringdate=sDateFormat.format(new Date()) ;
动态设置控件居中
1. FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现:
FrameLayout.LayoutParamslytp =new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT);
lytp .gravity =Gravity.CENTER;
btn.setLayoutParams(lytp);
2. RelativeLayout下动态设置子控件居中:
RelativeLayout.LayoutParamslp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,RelativeLayout.TRUE);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP,RelativeLayout.TRUE);
btn1.setLayoutParams(lp);
progressbar设置颜色
android:indeterminateDrawable=“@drawable/progressbar”
<?xmlversion=“1.0”encoding=“utf-8”?>
<animated-rotate
xmlns:android=“http://schemas.android.com/apk/res/android”
android:pivotX=“50%”android:pivotY=“50%”
android:fromDegrees=“0”
android:toDegrees=“360”>
<shape
android:shape=“ring”
android:innerRadiusRatio=“3”
android:thicknessRatio=“8”
android:useLevel=“false”>
<gradient
android:type=“sweep”
android:useLevel=“false”
android:startColor=“#6BD3FF”
android:centerColor=“#FF7121”
android:centerY=“0.50”
android:endColor=“#FFFF00”/>
</shape>
</animated-rotate>
设置水平进度条的颜色:
1. <LinearLayout android:gravity=“center”
2. android:orientation=“horizontal”
3. android:padding=“10dp”
4. android:layout_width=“fill_parent”
5. android:layout_height=“wrap_content”>
6. <SeekBar android:layout_gravity=“center” android:id=“@android:id/progress”
7. android:paddingLeft=“8.0dip” android:paddingRight=“8.0dip”
8. android:paddingBottom=“4.0dip” android:layout_width=“fill_parent”
9. android:layout_height=“wrap_content” android:maxHeight=“2.0px”
10. android:progressDrawable=“@drawable/progressbar_drawable” android:minHeight=“2.0px”
11. android:thumb=“@drawable/seekbar_thumb” style=“?android:attr/progressBarStyleHorizontal” />
12.</LinearLayout>
progressbar_drawable.xml如下:
[html] view plain copy
1. <?xml version=“1.0” encoding=“utf-8”?>
2. <layer-list xmlns:android=“http://schemas.android.com/apk/res/android”>
3. <item android:id=“@android:id/background”>
4. <shape>
5. <corners android:radius=“2.0dip” />
6. <gradient android:startColor=“#ff000000” android:centerColor=“#ff000000” android:endColor=“#ff000000” android:angle=“270.0” android:centerY=“2.0” />
7. </shape>
8. </item>
9. <item android:id=“@android:id/progress”>
10. <clip>
11. <shape>
12. <corners android:radius=“2.0dip” />
13. <gradient android:startColor=“#ff33b5e5” android:centerColor=“#ff33b5e5” android:endColor=“#ff33b5e5” android:angle=“270.0” android:centerY=“2.0” />
14. </shape>
15. </clip>
16. </item>
17. </layer-list>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/222945.html原文链接:https://javaforall.cn