Android学习之散乱的知识点
1.
安卓广告知名平台:有米,哇棒,架势,admob(国外,但效果不好)等,推荐用有米
2.
src目录为源文件目录,所有可以被用户修改和创建的Java文件将被存放在这个目录下
3.
xml中引用strings.xml
"@string/string_name"
在java文件中用
Activity.this.getString(R.string.resource_name)
4.
内容提供者主要用于不同程序之间进行数据共享。
5.
最好用onPause()方法来保存在停止与用户交互前更改的数据
6.
padding属性通常用来描述控件里面的内容与控件的关系
layout_margin通常用来描述控件之间的位置关系
7.
gravity用于设置该控件里的对齐方法
layout_gravity 用于设置控件 在父控件中的对齐方式
8.
最好用sp来描述文字
其他用dp
9.
在res/drawable/myimage.png位置保存了一张图片,在Layout XML中可以应用这个图片到一个View上:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/myimage" />
下面的代码可以以Drawable方式得到图片:
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
10.
id值。
11.
Textview在多行情况下如何显示省略号。
http://blog.sina.com.cn/s/blog_5eea5ce00101cugf.html
12.
<merge/>用法
http://www.cnblogs.com/travelfromandroid/articles/2133206.html
13.
在该Activity的onCreate函数中添加控制代码:
this.requestWindowFeature(Window.FEATURE_NO_TITLE); //设置Activity标题不显示
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); //设置全屏显示
注意:这两句代码必须写在setContentView函数的前面,否则运行会报错。
14.
能用内置的适配器,就用内置的适配器,这样只需写好子布局就可以了。
//用Map
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
int length = itemName.length;
for (int i = 0; i < length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImageView", imageRes[i]);
map.put("ItemTextView", itemName[i]);
data.add(map);
}
//为itme.xml添加适配器
SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this,
data, R.layout.gv, new String[] { "ItemImageView","ItemTextView" }, new int[] { R.id.ItemImageView,R.id.ItemTextView });
grid.setAdapter(simpleAdapter);
15.
上下文要是Acitivity的话,可用getApplicationContext()来获得返回值
16.
Toast用法
简单版:
Toast toast = Toast.makeText(ToastDemoActivity.this, "这是一个普通的Toast!", Toast.LENGTH_SHORT);
//三个参数:上下文,显示字符串,时间(单位为ms)
toast.show();
//记得展现出来。
设置位置:
方法一:setGravity(int gravity, int xOffset, int yOffset)三个参数分别表示(起点位置,水平向右位移,垂直向下位移)
例子:.setGravity(Gravity.CENTER, 0, 0);
例子:.setGravity(Gravity.TOP | Gravity.LEFT, 0, 200);
方法二:setMargin(float horizontalMargin, float verticalMargin)
以横向和纵向的百分比设置显示位置,参数均为float类型(水平位移正右负左,竖直位移正上负下)
例子:.setMargin(-0.5f, 0f);
自定义版本:
http://blog.csdn.net/coolszy/article/details/6365825
1.添加一个布局文件,该布局文件的结构和Activity使用的布局文件结构一致(可以不一致),在该布局文件中我们需设计我们Toast的布局。
2.在这个地方要注意,我们给LinearLayout添加的id属性,在后面的把xml转换为view代码中我们需要使用到。在程序中,我们可以通过如下代码创建我们自己的Toast。
- 获取LayoutInflater对象,该对象能把XML文件转换为与之一直的View对象
- LayoutInflater inflater = getLayoutInflater();
- //根据指定的布局文件创建一个具有层级关系的View对象
- //第二个参数为View对象的根节点,即LinearLayout的ID
- View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root));
- //查找ImageView控件
- //注意是在layout中查找
- ImageView image = (ImageView) layout.findViewById(R.id.image);
- image.setImageResource(R.drawable.head);
- TextView text = (TextView) layout.findViewById(R.id.text);
- text.setText("自定义Toast演示程序");
- Toast toast = new Toast(getApplicationContext());
- //设置Toast的位置
- toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
- toast.setDuration(Toast.LENGTH_LONG);
- //让Toast显示为我们自定义的样子
- toast.setView(layout); //重要之处
- toast.show();
17.
LinearLayout不能设置圆角背景。
18.
圆角:
设置边框圆角可以在drawable-mdpi目录里定义一个xml:
例:corner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#DAAA" />
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
</shape>
如果想引用这个xml,只需要@drawable/corners_bg.xml即可:
android:background="@drawable/corner"
例子:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:padding="15dip" android:layout_margin="15dip"
android:background="@drawable/corner"
>
<ImageView android:id="@+id/image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginRight="10dp"
/>
<TextView android:id="@+id/text"
android:layout_width="100dp"
android:layout_height="100dp"
android:textColor="#FFF"
android:gravity="center"
android:layout_toRightOf="@id/image"
/>
</RelativeLayout>
19.
布局大小控制技巧
android:layout_height="0dp" //或者宽度
android:layout_weight="1" //表示剩余布局的分配
20. web的使用。
xml中:
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
Java中:
webView=(WebView) findViewById(R.id.webView);
webView.loadUrl("Http://www.baidu.com");
要使网页真正加载在布局中,需要调用
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO 自动生成的方法存
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
});
更多方法:
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
// title为网页的标题
super.onReceivedTitle(view, title);
}
});
使用webView实现下载;
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
//实现下载的代码
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
}
});
如果访问的页面中有Javascript,则webview必须设置支持Javascript
webview.getSettings().setJavaScriptEnabled(true);
设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets文件中.可以加载404网页
另外还有其他一些可重写的方法
1,接收到Http请求的事件
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm)
2,打开链接前的事件
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; }
这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。
3,载入页面完成的事件
public void onPageFinished(WebView view, String url){ }
同样道理,我们知道一个页面载入完成,于是我们可以关闭loading条,切换程序动作。
4,载入页面开始的事件
public void onPageStarted(WebView view, String url, Bitmap favicon) { }
这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。
通过这几个事件,我们可以很轻松的控制程序操作,一边用着浏览器显示内容,一边监控着用户操作实现我们需要的各种显示方式,同时可以防止用户产生误操作。
按back返回上一个网页,重写Activity中的onKeyDown方法:
public boolean onKeyDown(int keyCoder,KeyEvent event){
if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){
webview.goBack(); //goBack()表示返回webView的上一页面
return true;
}
return false;
}
使用内置浏览器加载网页:
- Uri uri = Uri.parse(url); //url为你要链接的地址
- Intent intent =new Intent(Intent.ACTION_VIEW, uri);
- startActivity(intent);
Webview与js交互:需要js方面的知识
mWebView.goBack(); //后退
mWebView.goForward();//前进
mWebView.reload(); //刷新
21.
比较常用就记录下来了
bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="58dp"
android:background="@drawable/bottom_bar"
android:orientation="horizontal"
>
<LinearLayout
android:id="@+id/id_tab1"
android:layout_height="fill_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
>
<ImageButton
android:layout_marginTop="5dp"
android:id="@+id/id_btn1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/return_img"
android:background="#00000000"
android:clickable="false"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/id_tab2"
android:layout_height="fill_parent"
android:layout_width="0dp"
android:layout_weight="3"
android:gravity="center"
android:orientation="vertical"
>
<TextView
android:id="@+id/tvTitle"
android:text="Home"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#ffffff"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/id_tab3"
android:layout_height="fill_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
>
<ImageButton
android:layout_marginTop="5dp"
android:id="@+id/id_btn3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/refresh_img"
android:background="#00000000"
android:clickable="false"
/>
</LinearLayout>
</LinearLayout>
引用:<include layout="@layout/bottom"/>
22.
top.xml
<?xml version="1.0" encoding="utf-8"?>
<RelateLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/title_bg"
>
<ImageButton
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:src="@drawable/return_img"
/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="R"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_gravity="center"
android:layout_weight="1"
/>
</RelateLayout>
引用:<include layout="@layout/top"/>
23.
自定义PogresBar进度条(网页进度条)
主布局文件中:
<ProgressBar
android:id="@+id/pb"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="3dip"
android:indeterminateOnly="false"
android:max="100"
android:progressDrawable="@drawable/progress_bar_states" >
</ProgressBar>
接下来就是progress_bar_states
各种状态的设置
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<gradient
android:startColor="#ffffff"
android:centerColor="#ffffff"
android:endColor="#ffffff"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<gradient
android:startColor="#234"
android:centerColor="#234"
android:endColor="#a24"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:startColor="#33000001"
android:centerColor="#40000000"
android:endColor="#44000000"
/>
</shape>
</clip>
</item>
</layer-list>
24.