android 常用控件

1.文本控件 TextView

跑马灯效果:系统提供的textView文本虽然自带跑马灯效果但是只有获取到焦点的时候才能实现效果,

所以需要重写TextView类的isFocused()方法使它永远返回true

public class ScrollForeverTextView extends TextView {

	public ScrollForeverTextView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	public ScrollForeverTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public ScrollForeverTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	@Override
	public boolean isFocused() {
		return true;//关键是这个方法
	}

}
加入xml中的代码   ScrollForeverTextView前面的是这个类所在的包名 

 <com.quickeasytrip.view.ScrollForeverTextView
                    android:id="@+id/book_hotel_name_verify"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="marquee"
                    android:singleLine="true"
                    android:marqueeRepeatLimit="marquee_forever"
                    android:scrollHorizontally="true"
                     />

2.EditView 编辑框

   刚打开Activity的时候,很可能由于布局中含有一个EditView控件而自动弹出一个输入法,要想去掉这个讨厌的输入法框只要在EditView的父布局中加入一个属性即可

  解决之道:在EditText的父级控件中找一个,设置
          android:focusable="true" 
          android:focusableInTouchMode="true"
      这样,就把EditText默认的行为截断了!
  点编辑框输入用户名密码时,最经常遇到的问题就是,输入法把编辑框遮挡,如果想编辑下一个EditView就必须关闭输入法, 

扫描二维码关注公众号,回复: 4551447 查看本文章

  UI布局也与输入法分离,同时EditText区域自动缩小了。这样的话,即不影响用户输入,也不影响用户进一步操作!

  而且即使打开了输入法,用户也可以看到UI全貌,感觉比较舒服、友好

                此时只要在AndroidManifest.xml文件 这个activity中加入这个属性就可以

        android:windowSoftInputMode="adjustResize"

                如果登录名称是email类型,为方便用户,设置android:inputType属性就可以直接让弹出的输入法适应输入邮件格式

 android:inputType="textEmailAddress"适合输入邮件
 android:inputType="number"适合输入数字

  

3.ViewPage  
   使用这个控件需要先添加这个包,你的工程---->右键   android tools -------->addSupportLibrary  添加jar包

   第一步 在xml里添加控件

   

 <android.support.v4.view.ViewPager
  android:id="@+id/pagerMain"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_below="@+id/advert" />

   第二步  继承PagerAdapter  之后ViewPager添加  这个Adapter即可

public class MyPagerAdapter extends PagerAdapter {

	public List<View> mListViews = null;

	ViewPager mViewPager = null;

	public MyPagerAdapter(List<View> mListViews, ViewPager viewPager) {
		this.mViewPager = viewPager;
		this.mListViews = mListViews;
	}

	@Override
	public int getCount() {
		return mListViews.size();
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == (arg1);
	}

	@Override
	public Object instantiateItem(View container, int position) {
		((ViewPager) container).addView(mListViews.get(position));
		return mListViews.get(position);
	}

	@Override
	public void destroyItem(View container, int position, Object object) {
		if (mListViews.size() > 0) {
			if ((mListViews.size() - 1) >= position) {
				mViewPager.removeView(mListViews.get(position));
			}//经过实际测试,这个方法经常会报下标越界错误,这样写能有效避免类似错误
		}
	}

}

   4.提示框Dialog

      所有的提示类悬浮框都继承自这个类Dialog。最常用的两种提示框一个是AlertDialog,另一个是ProgresDialog,前者能和用户交互接受用户的操作,后者提示用户         有 一个费时的操作正在进行,请用户耐心等待

      因为自己的应用程序很难和系统的主题相匹配,所以通常都会自己写这两类提示框。下面给出一个自定义ProgresDialog例子

      

   View pdView = factory.inflate(R.layout.pd_view, null);
   Dialog mProgressDialog = new Dialog(this, R.style.nobgDialog);
   mProgressDialog.setContentView(pdView);  //最后执行show方法显示提示框mProgressDialog.show(); 

      pd_view的代码

      

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dip"
    android:layout_height="wrap_content"
    android:background="@drawable/pd_bg"
    android:gravity="center"
    android:orientation="horizontal" >

    <ProgressBar
        android:id="@+id/loading_process"
        android:layout_width="34dip"
        android:layout_height="34dip"
        android:indeterminate="false"
        android:indeterminateDrawable="@anim/frame_animation" />

    <TextView
        android:id="@+id/mPdText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dip"
        android:text="请稍后..."
        android:textColor="@android:color/black"
        android:textSize="14dip"
        android:textStyle="bold" />

</LinearLayout>
动画列表代码,当达到八帧每帧100毫秒的时候转动效果最流畅

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >
    <item android:drawable="@drawable/scan_01" android:duration="100"/>
    <item android:drawable="@drawable/scan_02" android:duration="100" />
    <item android:drawable="@drawable/scan_03" android:duration="100" />
    <item android:drawable="@drawable/scan_04" android:duration="100" />
    <item android:drawable="@drawable/scan_05" android:duration="100" />
    <item android:drawable="@drawable/scan_06" android:duration="100" />
    <item android:drawable="@drawable/scan_07" android:duration="100" />
    <item android:drawable="@drawable/scan_08" android:duration="100" />
</animation-list>

activity提供了一个方法专门管理所有的提示框

	@Override
	protected Dialog onCreateDialog(int id, Bundle args) {
		ProgressDialog dialog = new ProgressDialog(this);
		dialog.setMessage("等待狂");
		return dialog;
	}
调用showDialog(id);来显示具体的提示框,编程时dialog.show() 也能显示,好像这个方法是没用的,事实上,当你按back键返回操作时

前者会消除提示框,后者则不会有反应,需要自己重写onKeyDown()方法来消除提示框


5 ContextMenu 上下文菜单

   第一步  覆写activity    onCreateContextMenu()方法

   

@Override
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
	    // set context menu title
	    menu.setHeaderTitle("文件操作");
	    // add context menu item
	    menu.add(0, 1, Menu.NONE, "发送");
	    menu.add(0, 2, Menu.NONE, "标记为重要");
	    menu.add(0, 3, Menu.NONE, "重命名");
	    menu.add(0, 4, Menu.NONE, "删除");
		super.onCreateContextMenu(menu, v, menuInfo);
	}

    第二步  给上下文菜单注册一个VIew,当长按View的时候弹出菜单

    registerForContextMenu(View);


   



   



猜你喜欢

转载自blog.csdn.net/zhixun2012/article/details/8484044
今日推荐