@TryIT
2014-11-22T02:14:09.000000Z
字数 9201
阅读 1142
android
1.AsyncTask执行顺序:
execute方法之后onPreExecute方法doInBackground方法(Integer参数对应AsyncTask中的第一个参数,这里的String返回值对应AsyncTask的第三个参数 ),异步操作,进行下载等操作。 publishProgress方法触发onProgressUpdate(调用publishProgress方法触发onProgressUpdate对UI进行操作)对UI进行操作2.动态设置TextView的width不起作用:
final LayoutParams lp = mLrcTextShadow.getLayoutParams();
width += 5;
lp.width = width;
mLrcTextShadow.setLayoutParams(lp);
关键是重新设置LayoutParams,获取LayoutParams可以放到循环之外,先设置width,然后再设置一下就可以了
3.setBounds(x,y,width,height); 4.setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds的使用 Drawable left, Drawable top, Drawable right, Drawable bottom) 上、下、左、右设置图标,如果不想在某个地方显示,则设置为null getIntrinsicWidth和getIntrinsicHeight获取 Drawable必须已经setBounds(Rect) 即:添加的资源必须已经设置过初始位置、宽和高等信息 可以自定义资源的宽和高,而不是资源立即导入 Resources res = TabTest.this.getResources();
Drawable myImage = res.getDrawable(R.drawable.home);
myImage.setBounds(1, 1, 100, 100);
button.setCompoundDrawables(null, myImage, null, null);
5.对资源的理解:
Drawable myIconBg = getResources().getDrawable(iconResId);
Rect mRect=myIconBg.getBounds();
Log.d("tagWidth", mRect.width()+"");
一旦变成了资源,图标本身的高和宽都是为0,已经浓缩成一点了
6.获取手机的屏幕尺寸--DisplayMetrics浅析 WindowManager获取--此方法要放在oncreate()方法上 Display display = getWindowManager().getDefaultDisplay();
System.out.println("width-display :" + display.getWidth());
System.out.println("heigth-display :" + display.getHeight());
安卓4.2系统中,使用方法一得到了正确的屏幕尺寸值,而使用方法二和三得到的值全部为零。原因不祥。其中方法三中的display.getWidth()和display.getHeight()已被弃用。7.DisplayMetrics和Display的关系 8.尺寸资源的对应关系
Android手机屏幕标准 对应图标尺寸标准 屏幕密度
xhdpi 124*600 96*96 320
hdpi 480*800 72*72 240
mdpi 480*320 48*48 160
ldpi 320*240 36*36 120
9.layoutParams的使用
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
//调用addView()方法增加一个TextView到线性布局中
mLayout.addView(textView, p);
上面的代码,相等于下面的xml的布局:
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Text View"/>
所以--通过LayoutParams来设置大小,已经相对位置等:
LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。
可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在4行4列,这里的“4行4列”就是棋子的LayoutParams。
但LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
1,一个确定的值;
2,FILL_PARENT,即填满(和父容器一样大小);
3,WRAP_CONTENT,即包裹住组件就好。
10.ScrollView和HorizontalScrollView
两者都是android.view.ViewGroup->android.FrameLayout的子类,不同在于,一个垂直滚动显示内容,一个水平滚动显示内容。
首先我们定义一个ScrollView,因为ScrollView也是一个ViewGroup,所以我们可以直接使用ScrollView作为我们的xml文件的根元素:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="false">
<LinearLayout
android:id="@+id/layout"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="vertical"/>
</ScrollView>
我们看到,在ScrollView元素下面我们还给其定义了一个LinearLayout,并且设置了其方向为垂直方向的线性布局。我们添加图片的操作放在了代码中来完成。下面来看一下ScrollViewActivity这个类:
public class ScrollViewActivity extends Activity
{
private LinearLayout layout;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_scrollview);
layout = (LinearLayout) findViewById(R.id.layout);
for(int i = 0; i < 8; i++)
{
// 通过资源文件来获得指定一个Drawable对象
Drawable drawable = getResources().getDrawable(R.drawable.kk_hero);
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(drawable);
layout.addView(imageView);
}
}
}
11.FragmentPagerAdapter的使用12. 硬件加速:android:hardwareAccelerated=true 硬件加速并不支持所有2D画的操作,所以开启硬件加速可能会对使用自定义组件的应用程序造成影响 button的点击 xml文件中调用 Activity的方法:onSaveInstanceState() 的功能以及触发时机 fill_parent、wrap_content和match_parent的区别 visibility属性VISIBLE、INVISIBLE、GONE的区别 可见,不可见,隐藏Fragment之间的切换,跳转: AndoridManifest.xml里设置东西MainFragment的布局文件xml下: framelayout的布局下添加 fragment,主MainFragment里面加入<FragmentLayout />让fragment1,fragment2进行切换漏洞,详情:FragmentTransaction的commit和commitAllowingStateLoss的区别启动一个Service的过程如下: onCreate()可以进行一些服务的初始化工作,onStart()则启动服务。停止一个Service的过程如下: Android的string-array数据源简单使用: values文件夹的arrays.xml文件里 string-array name="city"下的所有item数据,简单又方便的一种方法。gridview的onItemClick(AdapterView<?> arg0, View view, int position,long arg3)方法 AdapterView<?> parent, View view, int position, long id android:focusableInTouchMode---可以通过touch来获得focus android:textCursorDrawable="@null","@null"作用是让光标颜色和text color一样select选择器 Item顺序是有讲究的,条件限定越细致,当item已经满足条件返回。可以理解为代码中的if,else if,else语句。去除默认样式位置,用@null,例如: android:textAlignment — 该属性设置文字的对齐方式 android:gravity:center--字体居中。 长度后,才有效果,比如:android:layout_width="fill_parent" LayoutParams) Eclipse自动生成lint.xml文件,介绍:Android Lint简介