android中实现跑马灯效果以及AutoCompleteTestView与MultiAutoCompleteTextView的学习

     跑马灯效果

  1.用过属性的方式实现跑马灯效果

         属性:

                 android:singleLine="true" 这个属性是设置TextView文本中文字以省略号的形式收缩文本内容

                 android:focusable="true":启动跑马效果

            

         

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:text="这是跑马灯实现,我是跑马灯,我要跑起来了,跑起来了跑呀跑呀" />

           那我们定义多个TextView实现跑马灯看看有什么效果?我们可以在activity_main.xml中加多一个TextView控件,可以看到如下显示

       

      很显然当我们定义多个TextView时候第二个TextView着跑不起来了,所以这很显然不能满足我们的需求这时我们可以自定义的方式来实现,这样就灵活的操作TextView了这样

就可以看上去方便许多

    2.自定义跑马灯

          实现步骤:

             1.定义一个普通类用于继承TextView控件对象

             2.重写相应的构造方法和isFocused()方法 

public class MyTextView extends TextView {

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

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

	@Override
	@ExportedProperty(category = "focus")
	public boolean isFocused() {
		//将其返回值设置为true
		return true ;
	}
}

       3.引用我们自定义的控件

 <com.example.runmudeng.MyTextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:text="这是跑马灯实现,我是跑马灯,我要跑起来了,跑起来了跑呀跑呀" />

    <com.example.runmudeng.MyTextView
        android:layout_below="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:text="这是跑马灯实现,我是跑马灯,我要跑起来了,跑起来了跑呀跑呀" />
    

    4.检查结果

      

     搜索提示快速查找

           AutoCompleteTextView控件

           在很多apk中都运用了这个功能操作,就像百度上当你输入一个android单词着会显示下拉提示供你选择点击,那如何实现下面图片的显示的那个功能呢?

我们着需要运用一个AutoCompleteTextView控件进行实现这个功能操作

       1.添加控件

         功能:可以动态的匹配输入的内容,可以根据显示匹配热门信息

        属性: android:completionThreshold="3" :这个属性是设置当你输入到3个字符的时候将列出提示内容

 <AutoCompleteTextView
        android:completionThreshold="3"
        android:id="@+id/autoCompleteTextView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入你要查询的内容" 
        >
 </AutoCompleteTextView>

  2.实现操作

               1)首先我们初始化控件             2)定义一个适配器对象

               3)初始化数据源                      4)将适配器赋值到控件中

public class MainActivity extends Activity {
	//初始化一个AutoCompleteTextView对象
	private AutoCompleteTextView act;
	//初始化数据源
	private String[] data = {"android","onClick","android2","Struts","Spring",};
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /**
         * 1实例化控件对象
         * 2需要定义一个适配器对象
         * 3初始化数据源
         * 4.将适配器赋值到控件对象中
         */
        act = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,data);
        
        act.setAdapter(adapter);
    }
  
}

     MultiAutoCompleteTextView控件

              功能:和上面的AutoCompleteTextView功能是一样的,只是该控件的功能更强大,它支持多选择操作 

              属性: android:completionThreshold="3" :这个属性是设置当你输入到3个字符的时候将列出提示内容

        1该控件支持多条件选择所以它要设置我们要选择时定义一个分割符,而这分割符是内部提供的方法进行操作

这次同样的在该Android工程下的activity_main.xml中添加另外的一个控件MultiAutoCompleteTextView通过这个控件可以实现多搜索选择操作

<MultiAutoCompleteTextView
        android:completionThreshold="3"
        android:id="@+id/multiAutoCompleteTextView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/autoCompleteTextView1"
        android:hint="请选择多个你要查询的内容" >
</MultiAutoCompleteTextView>

       2.实现同样操作,在MainActivity.java中获取该控件的对象,然后操作步骤如上

                1)首先我们初始化控件             2)定义一个适配器对象

                3)初始化数据源                      4)将适配器赋值到控件中     5)设置分割符

public class MainActivity extends Activity {
    
    //初始化一个AutoCompleteTextView对象
    private AutoCompleteTextView act;
    //初始化数据源
    private String[] data = {"android","onClick","android2","Struts","Spring",};
    //初始化一个MultiAutoCompleteTextView对象
    private MultiAutoCompleteTextView mact ;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /**
         * 1实例化控件对象
         * 2需要定义一个适配器对象
         * 3初始化数据源
         * 4.将适配器赋值到控件对象中
         */
        act = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,data);
        act.setAdapter(adapter);
        
        /**
         * 1实例化控件对象
         * 2需要定义一个适配器对象
         * 3初始化数据源
         * 4.将适配器赋值到控件对象中
         * 5设置分隔符
         */
        mact = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1);
        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,data);
        mact.setAdapter(adapter2);
        mact.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
        
    }
}

         

         ToggleButton控件

      1.什么是ToggleButton:可以通过toggle这个单词就指定,就像开关操作,当你点击一下则开,点击一下着关

            状态:分为选中状态和未选中状态 ,并且为不同的状态设置不同的显示文本内容

            属性:android:checked=" "  textOff=""  textOn=""   

                      check属性:默认是false

                      textOff,textOn:是设置你开关值

        1.首先我们在布局文件中添加一个控件ToggleButton

<ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textOn="开"
        android:textOff="关"
        />

          2.编写代码获取你点击的状态

public class MainActivity extends Activity {

    //声明一个ToggleButton对象
    private ToggleButton togglebt ;
    private ImageView imgView ;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        togglebt = (ToggleButton) findViewById(R.id.toggleButton1);
        imgView = (ImageView) findViewById(R.id.img);
        //给toggleButton绑定一个事件
        togglebt.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                
                //获取当前点击时是否为true
                if(isChecked){
                    
                    imgView.setBackgroundResource(R.drawable.on);
                }else{
                    imgView.setBackgroundResource(R.drawable.off);
                }
            }
            
        });
    }

}

       CheckBox复选框

<CheckBox
        android:checked="true"
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CheckBox" />

      RadioGroup和RadioButton 实现底部选择栏

<RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="RadioButton" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RadioButton" />
    </RadioGroup>

         说起RadioGroup在实际的开发中运用非常广,在很多的apk中都基本上运用了该组件实现了底部选栏的效果

接下来小编带大家实现微信底部选栏 

       1.我们定义一个布局文件为activity_footer.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="match_parent"
    android:orientation="horizontal" >

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:background="@drawable/group_buton_nomal"
         >

         <RadioButton
               android:drawableTop="@drawable/_mainframe"
            android:id="@+id/radio0"
            android:checked="true"
            android:text="@string/_weixi_text"
            style="@style/radio_group" 
            android:textColor="@drawable/_mainframe"
           />

        <RadioButton
            android:drawableTop="@drawable/content"
            android:id="@+id/radio1"
            android:text="@string/_str_address" 
            style="@style/radio_group" 
            android:textColor="@drawable/content"/>

        <RadioButton
            android:drawableTop="@drawable/_discover"
            android:id="@+id/radio2"
            android:text="@string/_str_find" 
            style="@style/radio_group"
            android:textColor="@drawable/_discover" />
        
       <RadioButton
               android:drawableTop="@drawable/_me"
            android:id="@+id/radio3"
            android:text="@string/_str_me"
            style="@style/radio_group" 
            android:textColor="@drawable/_me"
            />
            
    </RadioGroup>

</LinearLayout>

          我们可以通过RadioGroup组件中的一个属性android:orientation="horizontal"设置该组件中的内容为水平排列 

  然后我将一些公共的样式抽取到一个style.xml中

  <style name="radio_group">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
           <item name="android:layout_weight">1</item>
           <item name="android:button">@null</item>
           <item name="android:gravity">center</item>
           <item name="android:textSize">10dp</item>
    </style>
    

        如何将一个按钮变化为一个图片呢?很简单可以通过 android:button="@null"/>

 这时你可以看到如下的布局了是不是很快呢??

       2. 这时我们要设置当你点击的时候可以切换图片和字体颜色,我们需要定义一个xml来帮我实现该效果

           1)我们在drawable目录下分别为这四个案例设置xml文件

         

             xxx.xml内容

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <!-- 点击的时候改变图片,并且字体设置颜色  -->
    <item android:state_checked="true" android:drawable="@drawable/tabbar_discoverhl" android:color="@color/green"/>
    <item android:drawable="@drawable/tabbar_discover" android:color="@color/grey"/>
 
</selector>

            当你点击时为true将设置有颜色的图片和将字体改为绿色,当你编写完这4个文件之后,这时候你要分别在每个radioButton中引用这四个文件

如:
<RadioButton
      android:drawableTop="@drawable/_me"//图片引用
      android:id="@+id/radio3"
      android:text="@string/_str_me"
      style="@style/radio_group"
      android:textColor="@drawable/_me"//字体引用
      />

       恭喜你操作完成

     

        

           

原文地址:https://www.cnblogs.com/xiaotaojing/p/6099769.html