加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 教程 > 正文

Android类似于滚动的通知栏达成

发布时间:2021-11-24 15:15:58 所属栏目:教程 来源:互联网
导读:控件类似于网页上的滚动播报栏 图片1: 图片2: 如上图,实现滚动栏里多条消息的自切换; 点击后获取具体内容。 简单是实现代码: [html] public class PublicNoticeView extends LinearLayout { private static final String TAG = LILITH; private Context

控件类似于网页上的滚动播报栏
 
图片1:
 
 
 
图片2:
 
 
 
如上图,实现滚动栏里多条消息的自切换;
 
点击后获取具体内容。
 
简单是实现代码:
 
[html]
public class PublicNoticeView extends LinearLayout {  
  
    private static final String TAG = "LILITH";   
    private Context mContext;  
    private ViewFlipper viewFlipper;  
    private View scrollTitleView;  
    private Intent intent;  
      
    Handler mHandler = new Handler(){  
        @Override  
        public void handleMessage(Message msg) {  
            // TODO Auto-generated method stub  
            switch (msg.what) {  
            case 1:  
                  
                //bindNotices();  
                break;  
  
            case -1:  
                break;  
            }  
        }  
    };  
  
    /**  
     * 构造  
     * @param context  
     */  
    public PublicNoticeView(Context context) {  
        super(context);  
        mContext = context;  
        init();   
    }  
      
  
    public PublicNoticeView(Context context,AttributeSet attrs) {  
        super(context, attrs);  
        mContext = context;  
        init();  
          
    }  
      
    /**  
     * 网络请求后返回公告内容进行适配  
     */  
    protected void bindNotices() {  
        // TODO Auto-generated method stub  
        viewFlipper.removeAllViews();  
        int i = 0;  
        while(i<5){  
            String text = "公告:中奖了 5000w-------";  
            TextView textView = new TextView(mContext);  
            textView.setText(text);  
            textView.setOnClickListener(new NoticeTitleOnClickListener(mContext,i+text));  
            LayoutParams lp = new LinearLayout.LayoutParams(  
                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);  
            viewFlipper.addView(textView,lp);  
            i++;  
        }  
    }  
  
  
    private void init(){  
        bindLinearLayout();  
        Message msg = new Message();  
        msg.what = 1;  
        mHandler.sendMessageDelayed(msg, 3000);  
          
    }  
  
    /**  
     * 初始化自定义的布局  
     */  
    public void bindLinearLayout() {  
        scrollTitleView = LayoutInflater.from(mContext).inflate(  
                R.layout.main_public_notice_title, null);  
        LayoutParams layoutParams = new LinearLayout.LayoutParams(  
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);  
        addView(scrollTitleView, layoutParams);  
  
        viewFlipper = (ViewFlipper) scrollTitleView  
                .findViewById(R.id.flipper_scrollTitle);  
        viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, Android.R.anim.slide_in_left));  
        viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, android.R.anim.slide_out_right));  
        viewFlipper.startFlipping();  
        View v = viewFlipper.getCurrentView();  
          
    }  
      
      
    /**  
     * 获取公告资讯  
     */  
    public void getPublicNotices(){  
        //网络请求获取  
    }  
      
    /**  
     * 公告title监听  
     * @author Nono  
     *  
     */  
    class NoticeTitleOnClickListener implements OnClickListener{  
        private Context context;  
        private String titleid;  
  
        public NoticeTitleOnClickListener(Context context, String whichText){  
            this.context = context;  
            this.titleid = whichText;  
        }  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            disPlayNoticeContent(context,titleid);  
        }  
          
    }  
  
    /**  
     * 显示notice的具体内容  
     * @param context  
     * @param titleid  
     */  
    public void disPlayNoticeContent(Context context, String titleid) {  
        // TODO Auto-generated method stub  
        Toast.makeText(context, titleid, Toast.LENGTH_SHORT).show();  
        intent = new Intent(context, InformationContentActivity.class);  
        intent.putExtra("tag", titleid);  
        ((Activity)context).startActivity(intent);  
    }  
  
}  
代码简单分析:
1.构造初始化,默认无网络情况下客户端两条信息滚动(比如公司简介,网址,以及一些介绍)。因为改两条数据我是xml写死的。没做点击处理。
具体布局xml:
 
[html]
?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:layout_width="fill_parent"  
    android:layout_height="wrap_content" android:orientation="horizontal"  
    xmlns:android="http://schemas.android.com/apk/res/android">  
      
        <ImageView xmlns:android="http://schemas.android.com/apk/res/android"  
         android:layout_width="wrap_content" android:layout_marginRight="10dip"  
        android:layout_height="fill_parent" android:src="@drawable/main_notice1"  
        android:layout_gravity="center" android:gravity="center"/>  
    <ViewFlipper android:layout_gravity="center" android:padding="5dip"  
        android:id="@+id/flipper_scrollTitle" android:background="@drawable/main_notice_bg"  
        android:layout_width="fill_parent" android:layout_height="fill_parent"  
        android:layout_margin="0.0dip" android:flipInterval="5000"  
        android:layout_weight="1.0">  
          
        <TextView   
            android:gravity="center" android:id="@+id/scrollTile_hd"  
            android:layout_width="fill_parent" android:layout_height="fill_parent"  
            android:text="@string/default_notice1"/>  
        <TextView   
            android:gravity="center" android:id="@+id/scrollTile_hm"  
            android:layout_width="fill_parent" android:layout_height="fill_parent"  
            android:text="@string/default_notice2" />  
    </ViewFlipper>  
</LinearLayout>  
用ViewFliper作为滚动布局的root,5000秒滚动。至于上下滚,左右滚,效果可自定义;

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读