Android 开发过程遇到的经验总结

1、android get 请求包含特殊字符或中文的时候需要转码。

//转码
String url= java.net.URLEncoder.encode(ss,"utf-8");
System.out.println(url);
//解码
System.out.println(java.net.URLDecoder.decode(url,"utf-8"));
2、 在我们的项目中,经常需要对WebView中加载的内容是否完成或者是否加载失败进行判别,这两天写的一个小应用就涉及到了这一点。 WebView的实质就是loadUrl,所以前提是设备接入网络,那么这个如何判断呢?看代码吧:

// 网络状态
public boolean isNetworkConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworkInfo = mConnectivityManager
                .getActiveNetworkInfo();
        if (mNetworkInfo != null) {
            return mNetworkInfo.isAvailable();
        }
    }
    return false;
如果网络正常就加载WebView,否则就提示用户接入网络。

问题2:在使用WebView的过程中,我发现在当前Activity加载网页之外,还会打开浏览器加载我们的URL。所以需要重写一个

wvLast.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
	view.loadUrl(url);
	return true;
    }
}
3、软键盘的显示与隐藏

	public static void showSoftKeybord(Context context,EditText edit){
	InputMethodManager inputManager = (InputMethodManager) edit.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
		inputManager.showSoftInput(edit, 0);
	}
	public static void hideSoftKeybord(Context context){
		try{
			((InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(((Activity) context).getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
4、判断控件是否处于显示状态

可以通过view.getVisiable()然后与View.VISIBLE、View.INVISIBLE、View.GONE比较

5、获取手机的产品信息

String phoneInfo = "产品名称: " + android.os.Build.PRODUCT;
phoneInfo += "\nCPU型号: " + android.os.Build.CPU_ABI;
phoneInfo += "\n标签: " + android.os.Build.TAGS;
phoneInfo += "\n手机型号: " + android.os.Build.MODEL;
phoneInfo += "\nSDK版本: " + android.os.Build.VERSION.SDK;
phoneInfo += "\n系统版本: " + android.os.Build.VERSION.RELEASE;
phoneInfo += "\n设备驱动: " + android.os.Build.DEVICE;
phoneInfo += "\n显示: " + android.os.Build.DISPLAY;
phoneInfo += "\n品牌: " + android.os.Build.BRAND;
phoneInfo += "\n主板: " + android.os.Build.BOARD;
phoneInfo += "\n指纹: " + android.os.Build.FINGERPRINT;
phoneInfo += "\nID: " + android.os.Build.ID;
phoneInfo += "\n制造商: " + android.os.Build.MANUFACTURER;
phoneInfo += "\n用户组: " + android.os.Build.USER;
return phoneInfo;
6、在java文件中声明一个TextView的字体颜色

Color.parse("#eeeeee");

7、Android判断输入类型

String text= edInput.getText().toString();
Pattern p =Pattern.compile("[0-9]*");
Matcher m = p.matcher(text);
if(m.matches()){
Toast.makeText(Main.this,"输入的是数字",Toast.LENGTH_SHORT).show();
}
p=Pattern.compile("[a-zA-Z]");
m=p.matcher(text);
if(m.matches()){
Toast.makeText(Main.this,"输入的是字母",Toast.LENGTH_SHORT).show();
}
p=Pattern.compile("[\u4e00-\u9fa5]");
m=p.matcher(text);
if(m.matches()){
Toast.makeText(Main.this,"输入的是汉字",Toast.LENGTH_SHORT).show();
}


8、popupWindow 在控件的各个方向上的显示(上、下、左、右)

上方:    int [] location = new int [ 2 ];
v.getLocationOnScreen(location);
        popupWindow . showAtLocation ( v , Gravity . NO_GRAVITY , location [ 0 ], location [ 1 ]- popupWindow . getHeight ());

下方:popupWindow.showAsDropDown(v);

左边:popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);  

右边:popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]+v.getWidth(), location[1]);  


9、设置TextView中给字体设置不同的颜色

 String str = "<font color='#ff0000'><b>hello world</b></font>牛兑换<font color='#ff0000'><b>我爱你</b></font>";
         aq.id(R.id.html).text(Html.fromHtml(str));


10、TextView的灵活使用:

在项目中有无遇到过这样一种程况,例如文字"王明今年10岁了", 但是数字10是从网络返回的数据, 而你又想把这个文字写在xml中, 过往我的做法是分成3个TextView, 实现愚蠢。今天遇到一种解决办法。

在string.xml中设置

<string name="age">王明今年 %1$d</string>


然后设置的时候就可以:

textView.setText(String.format(mContext.getString(R.string.age), age));

 

%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 
%n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 
%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00 

11、在多行文本输入的时候,Textview里面的文本默认居中对齐的,这样子有点个跟日常的习惯不太一样。所以为了解决这个问题,通过添加
 
 
android:gravity:start。便可解决问题。
12、通知listView的适配器数据变更

这种适用于listView追加数据的情况,严格说不是恢复listView滚动的位置,只是保持滚动位置不错

  1. listDataAdapter.getDataList.addAll(newDataList());   
  2. listDataAdapter.notifyDataSetChanged();  

13、 去除listview顶部与底部分割线
最简单的办法是让listView直接高度使用wrap_content。注意的是这时候他的父容器不能使用PaddingButtom属性。
          前提是设置了此方法
addHeaderView(headView, null, true);

        addFooterView(footView, null, true);

        注意:第三个参数必须为true,否则无效

        android:footerDividersEnabled="false"

        android:headerDividersEnabled="false"



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio有以下几个主要的好处和开发过程: 1. 集成开发环境:Android Studio是一个全面的集成开发环境,提供了丰富的工具和功能,可以满足开发者在Android应用程序开发过程中的各种需求。它集成了编码、调试、构建、布局设计、性能分析等多个工具,使得开发过程更加高效和便捷。 2. 智能编码助手:Android Studio内置了智能代码补全、语法高亮、错误检查等功能,可以帮助开发者更快地编写代码并减少错误。它还支持代码重构,能够快速重命名变量、提取方法等,提高代码的可读性和重用性。 3. 可视化布局编辑器:Android Studio提供了可视化的布局编辑器,可以直观地设计和调整用户界面。开发者可以通过拖拽和调整控件的属性来创建界面,并实时预览效果。这大大减少了手动编写布局代码的工作量。 4. 强大的调试工具:Android Studio内置了强大的调试工具,支持单步调试、断点调试、变量监视等功能。开发者可以方便地定位和解决代码中的问题,并进行性能分析,以优化应用程序的运行效果。 5. 集成的构建工具:Android Studio集成了Gradle构建系统,可以帮助开发者更方便地管理和构建项目。它支持自动化构建、依赖管理、多渠道打包等功能,简化了应用程序的构建和发布过程。 在Android Studio的开发过程中,一般包括以下几个步骤: 1. 创建项目:通过Android Studio创建一个新的Android项目,并选择适当的项目模板和设置。 2. 编写代码:使用Android Studio的代码编辑器编写应用程序的逻辑代码,包括业务逻辑、界面逻辑和数据处理等。 3. 设计界面:使用Android Studio的可视化布局编辑器设计应用程序的用户界面,可以通过拖拽和调整控件的属性来创建布局。 4. 调试和测试:使用Android Studio内置的调试工具进行代码调试和测试,定位和解决问题,并确保应用程序的稳定性和正确性。 5. 构建和发布:使用Android Studio的构建工具进行项目构建,生成APK包,并进行签名、打包、发布等操作,最终将应用程序发布到Google Play商店或其他渠道。 总的来说,Android Studio提供了一套完整的工具链,能够帮助开发者高效地进行Android应用程序的开发、调试、测试和发布。它的智能编码助手、可视化布局编辑器和强大的调试工具等功能,大大简化了开发过程,提高了开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值