安辉 2020-01-30
这半个月一直在学习Android方面的知识,对Android开发有了一个基本的认识,学会了Android studio的基本操作。
在建立第一个Android studio项目时,我遇到了很大的阻碍,像这种问题ERROR: Cause: unable to find valid certification path to requested target等等,我以为会像安装ecplise时那样卡住,每当解决一个问题就会冒出一个新的问题,后来我放平了心态,平心静气地去寻找它的原因,百度了各种方法,像设置代理等等方法,再后来我知晓了这大概是网络问题。在暑假搞ecplise时就是因为家里的wifi并不能访问它的网站而安装失败,后来我就用自己的流量试了试,这个无法连接的问题就解决了,之后我又注释掉了junit,才正常构建出第一个hello world,正如在ecplise安装过程一样,这几天时间使我对Android studio更加熟悉,为后续的学习开辟道路。
在解决完它的构建问题后,我便全身心投入到了Android学习中去,首先,我花了两天时间熟悉了各类文件的位置,并学习了线性布局和相对布局两种基础的布局,了解到了两种布局的各种属性,像height、width、orientation、below、background等等,对控件布局有了基本认识。在我看来,线性布局便是控件沿着横向或纵向排列,而相对布局则更复杂一点,它以每个控件地相对位置进行布局。
之后,我又学习了TextView、Button和EditText,首先学习了TextView的各种属性,学会了通过singleLine、ellplize、marqueeRepeatLimite、focusable、focusableInTouchMode设置文字的跑马灯效果,学习了如何通过xml文件制作控件的各种背景,通过corner和riple等属性设置按钮的各种效果,通过hint设置背景字体,制作了一个简单的登录界面,可以给按钮加一个简单的监听事件,弹出一个Toast。
后来两天,我又学习了RadioButton和CheckBox,学会了监听选取事件,并会设置它的各种样式,
学会了通过ImageView加载图片,通过引用glide包下的Glide.with(activity).load();加载网络图片资源。
后来,我又学习了各种视图:列表视图,网格视图,滚动视图,循环视图,网络视图等。
视图这里需要用到适配器Adapter管理布局,写一个layout作为单元布局,通过iflater填充布局,在Adapter中获取单元layout,并对数量和内容进行管理,网格视图可对行列数进行设置,而列表视图只能设置单行或单列。
ScrollView和HorScrollView中只能有一个子控件,所以在子控件中写一个布局在布局中写控件实现视图的横向滚动和竖向滚动。
WebView使用前要先在manifest声明网络权限<uses-permission android:name="android.permission.INTERNET" />,和其他各种权限
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setAllowFileAccess(true);
wv.getSettings().setAllowContentAccess(true);
wv.setWebViewClient(new WebViewClient());
通过.load加载资源
对于RecyclerView暂时还不是很理解。但了解了它的简单用法,了解到通过RecyclerView实现水平视图、列表视图和瀑布流视图。
之后,我又对Toast进行了学习。通过setGravity设置弹出位置,设置弹出时间,弹出一个view等。
通过showToast方法解决时间叠加问题
public static void showToast(Context context, String msg, int Length, int gravity) {
if (toast == null) {
toast=Toast.makeText(context, msg, Length);
} else {
toast.setText(msg);
}
if (gravity!=0)
toast.setGravity(gravity,0,0);
toast.show();
}
之后又学会实现各种dialog,了解到dialog的各种方法。
前两天,我又对ProgressBar、自定义dialog和PopWindow进行了学习,实现了进度条的各类样式,包括通过drawable xml和style实现自定义style的进度条样式,通过handler和runable实现进度条信息传递和加载以及ProgressDialog的实现。
自定义dialog:通过自定义的layout画出布局
,在CustomDialog类中实现settitle,setmessage等各种方法,加上监听接口实现自定义dialog。
PopWindow的实现
View view=getLayoutInflater().inflate(R.layout.layout_pop,null);
popupWindow=new PopupWindow(view,button.getWidth(),4*button.getHeight(),true);
//可取消
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(button);