setbackgroundcolorjava中关于addActionListener的问题

setbackgroundcolor  时间:2021-08-26  阅读:()

如何设置actionbar让分割线改变颜色

android 布局 layout relativelayout   除了沉浸模式外,Android 4.4还有新的API,能使应用内的状态栏和虚拟按钮透明。

其他更多的Android 4.4 APIs可以看这里。

  如果要使应用内的状态栏和虚拟按钮变成透明有两种方法。

  一种是代码方式:   ?1   2   3Window window = getWindow();   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);   另外一种是使用两个新的主题风格:   Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor。

  但是这种方式只支持Android4.4以上系统,所以为了保持兼容性,我们还是采用代码方式比较好。

只需要先判断,如果是4.4以上系统才启用代码。

  开启后上下系统栏都透明了。

  但是如果应用本身是带有actionbar或者标题栏的话会就会变得比较尴尬,内容会在上面露出来。

这个时候需要在布局文件里加入android:fitsSystemWindows="true"。

  android:id="@+id/layout"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:background="#c8c8c8" >   android:id="@+id/iew"   android:layout_width="match_parent"   android:layout_height="match_parent" />   但是这样的话内容就不能从透明的虚拟按钮下穿过,没原来那么好看。

我们可以按照以前一样把根布局设置一个高度为系统栏高度和ActionBar高度的内边距就可以。

  同时关于获取ActionBar和状态栏的高度,发现用原来的方法有时候会获取的值为0。

自己google找了一下,找到两个前辈提供的获取高度方法,获取ActionBar高度,获取状态栏高度。

  8if (android.os.Build.VERSION.SDK_INT > 18) {   Window window = getWindow();   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);   //设置根布局的内边距   RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.layout);   relativeLayout.setPadding(0, getActionBarHeight()+getStatusBarHeight(), 0, 0);   }   27// 获取手机状态栏高度   public int getStatusBarHeight() {   Class c = null;   Object obj = null;   Field field = null;   int x = 0, statusBarHeight = 0;   try {   c = Class.forName(.android.internal.R$dimen");   obj = c.newInstance();   field = c.getField("status_bar_height");   x = Integer.parseInt(field.get(obj).toString());   statusBarHeight = getResources().getDimensionPixelSize(x);   } catch (Exception e1) {   e1.printStackTrace();   }   return statusBarHeight;   }   // 获取ActionBar的高度   public int getActionBarHeight() {    = new TypedValue();   int actionBarHeight = 0;   if (getTheme().resolveAttribute(android.R.attr.actionBarSize,, true))// 如果资源是存在的、有效的   {   actionBarHeight = .data, getResources().getDisplayMetrics());   }   return actionBarHeight;   }   接下来,因为我自己写的一些应用是暗色的主题的,会导致透明的状态栏和ActionBar颜色不太协调。

看到有一些应用是把状态栏的颜色设置成和ActionBar一样,这种解决方法也不错。

  具体是怎么实现的也不太清楚,我自己猜测写了一个差不多状态栏。

我是直接在根视图加入一个高度为状态栏高度的TextView,背景设置为和ActionBar一样。

具体代码如下:   8// 创建TextView   TextView textView = new TextView(this);   LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, getStatusBarHeight());   textView.setBackgroundColor(Color.parseColor("#3F9FE0"));   textView.setLayoutParams(lParams);   // 获得根视图并把TextView加进去。

  ViewGroup view = (ViewGroup) getWindow().getDecorView();   view.addView(textView);   在模拟器上看还行,但是在实际的手机当中总感觉ActionBar有点过大,所以我在背景色里加入了一些渐变,在实体手机中就比较好看一点,不会觉得ActionBar太宽了。

  android:startColor="#c8c8c8"   android:endColor="#3F9FE0"   android:angle="270"   android:type="linear"/>

JFrame的形状

这个是能改变的 给你一个实例代码 import java.awt.*; import java.awt.geom.*;//注意此包加载 import javax.swing.*; /** * 制作一个圆形按钮时,需要做两件事: * 第一件事是重载一个适合的绘图方法以画出一个图形 * 第二件事是设置一些事件使得只有当单击图形按钮的范围中的时候才会做出响应*/ public class CircleButton extends JButton{ public CircleButton(String label){ super(label); Dimension size=getPreferredSize();//获取按钮的最佳大小 //调整按钮的大小,使之变成一个方形 size.width=size.height=Math.max(size.width,size.height); setPreferredSize(size); //使jbutton不画背景,即不显示方形背景,而允许我们画一个圆的背景 setContentAreaFilled(false); } //画图的按钮的背景和标签 protected void paintComponent(Graphics g){ if(getModel().isArmed()){ //getModel方法返回鼠标的模型ButtonModel //如果鼠标按下按钮,则buttonModel的armed属性为真 g.setColor(Color.LIGHT_GRAY); }else{ //其他事件用默认的背景色显示按钮 g.setColor(getBackground()); } //fillOval方法画一个矩形的内切椭圆,并且填充这个椭圆 //当矩形为正方形时,画出的椭圆便是圆 g.fillOval(0,0,getSize().width-1,getSize().height-1); //调用父类的paintComponent画按钮的标签和焦点所在的小矩形 super.paintComponents(g); } //用简单的弧充当按钮的边界 protected void paintBorder(Graphics g){ g.setColor(getForeground()); //drawOval方法画矩形的内切椭圆,但不填充,只画出一个边界 g.drawOval(0,0,getSize().width-1,getSize().height-1); } Shape shape;//用于保存按钮的形状,有助于侦听单击按钮事件 //判断鼠标是否点在按钮上 public boolean contains(int x,int y){ //如果按钮边框,位置发生改变,则产生一个新的形状对象 if((shape==null)||(!shape.getBounds().equals(getBounds()))){ //构造椭圆型对象 shape=new Ellipse2D.Float(0,0,getWidth(),getHeight()); } //判断鼠标的x,y坐标是否落在按钮形状内 return shape.contains(x,y); } public static void main(String[] args){ JButton button=new CircleButton("Click me");//产生一个圆形按钮 button.setBackground(Color.green);//设置背景色为绿色 //产生一个框架显示这个按钮 JFrame frame=new JFrame("图形按钮"); frame.getContentPane().setBackground(Color.yellow); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(but

Android开发中,为什么TextView.setBackgroundColor(R.color.all_white);没有效果?谢谢!

试下这个. lassMyTextViewextends Activity { private TextView mTextView;//声明TextView对象 /** Called when the activity is first created. */ @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById();//取得TextView对象 mTextView.setText("我的第一个文本");//设置TextView显示的内容 mTextView.setTextColor(Color.GREEN);//设置TextView的颜色 mTextView.setBackgroundColor(Color.WHITE);//设置TextView的背景色 } }

怎样自定义TabView

你可以参照着下面的代码自己修改一下就好了:for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { tabHost.setOnTabChangedListener(new OnTabChangeListener(){ @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { tabHost.getTabWidget().getChildAt(i).setBackgroundColor(R.color.transparent); //unselected } tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#000011")); // selected }

怎样设置TfrxCrossView的颜色

晕,你怎么能直接在子线程内更新ui啊,应该用handler来更新控件,代码给你改一下了 Runnable begin = new Runnable(){ @Override public void run(){ try{ Thread.sleep(2000); Message msg = new Message(); msg.what = 100; this.mHandler.sendMessage(msg); } catch(InterruptedException e){} } }; private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 100: 1.setBackgroundColor(Color.RED); break; } };

java中关于addActionListener的问题

这里的this 指的是你的方法或成员或操作火灾的这个类,this在这里的作用是说明,你必须在该类里面来实现ActionListener里面的actionPerformed方法,其实btnUp.addActionListener(Object t);这里的参数的意思是,这个t是哪个类的对象,那么那个类就负责来实现接口的方法,不知道你理解了没有。

import java.awt.*; import java.awt.event.*; public class Bnbn //implements ActionListener { Frame frmFrame; Button btnUp, btnDown; public Bnbn() { frmFrame = new Frame("按钮应用"); frmFrame.setLayout(new GridLayout(2,1)); ss s=new ss();//产生内部类对象作监视器 //产生按钮一 btnUp = new Button("上"); btnUp.setActionCommand("btnUp"); btnUp.addActionListener(s); //产生按钮二 btnDown = new Button("下"); btnDown.setActionCommand("btnDown"); btnDown.addActionListener(s); frmFrame.add(btnUp); frmFrame.add(btnDown); frmFrame.pack(); frmFrame.setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } class ss implements ActionListener //创建内部类作监视器 { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if ( cmd.equals("btnDown") ) { if (btnUp.getBackground()==Color.BLUE) { btnUp.setBackground(Color.red); } else { btnUp.setBackground(Color.blue); } } else { if (btnDown.getBackground()==Color.BLUE) { btnDown.setBackground(Color.red); } else { btnDown.setBackground(Color.blue); } } } } public static void main(String[] args) { new Bnbn(); } }

速云:深圳独立服务器,新品上线,深港mpls免费体验,多重活动!

速云怎么样?速云是一家国人商家。速云商家主要提供广州移动、深圳移动、广州茂名联通、香港HKT等VDS和独立服务器。目前,速云推出深圳独服优惠活动,机房为深圳移动机房,购买深圳服务器可享受5折优惠,目前独立服务器还支持申请免费试用,需要提交工单开通免费体验试用,次月可享受永久8折优惠,也是需工单申请哦!点击进入:速云官方网站地址活动期限至 2021年7月22日速云云服务器优惠活动:活动1:新购首月可...

LOCVPS:美国XEN架构VPS七折,全场八折,日本/新加坡XEN架构月付29.6元起

LOCVPS发来了针对XEN架构VPS的促销方案,其中美国洛杉矶机房7折,其余日本/新加坡/中国香港等机房全部8折,优惠后日本/新加坡机房XEN VPS月付仅29.6元起。这是成立较久的一家国人VPS服务商,目前提供美国洛杉矶(MC/C3)、和中国香港(邦联、沙田电信、大埔)、日本(东京、大阪)、新加坡、德国和荷兰等机房VPS主机,基于XEN或者KVM虚拟架构,均选择国内访问线路不错的机房,适合建...

青云互联-洛杉矶CN2弹性云限时五折,9.5元/月起,三网CN2gia回程,可选Windows,可自定义配置

官方网站:点击访问青云互联官网优惠码:五折优惠码:5LHbEhaS (一次性五折,可月付、季付、半年付、年付)活动方案:的套餐分为大带宽限流和小带宽不限流两种套餐,全部为KVM虚拟架构,而且配置都可以弹性设置1、洛杉矶cera机房三网回程cn2gia 洛杉矶cera机房                ...

setbackgroundcolor为你推荐
自己动手写操作系统自己动手编写操作系统 现代操作系统两本书哪个好余额宝收益走势图实图,刚把5万多闲钱放到余额宝了看看能赚多少快速网网课怎么刷监控设备安装监控设备如何安装网通玩电信游戏卡怎么办网通怎么在电信玩游戏不卡软件更新不可用为什么vivo手机更新不了软件?反恐精英维护到几点今天反恐精英几点维护完?解码器有什么用视频编码器和视频解码器有什么不同锤子手机发布会视频锤子手机怎么样 锤子手机评测信息发布管理系统信息发布系统的功能有哪些?
备案域名查询 怎样注册域名 国外主机 hostmonster asp.net主机 blackfriday 全能主机 hnyd 七夕促销 asp免费空间申请 卡巴斯基试用版 cn3 国外ip加速器 raid10 中国电信测速器 百度云加速 沈阳主机托管 可外链的相册 godaddy空间 买空间网 更多