欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android小体会

程序员文章站 2022-04-28 22:01:05
...
学习Android开发已经几天了,虽然与之前的学习内容有所不同,但我感觉这个很有趣,很多东西还是与之前的一样,就是改了名字,改了一些方法,至少,编程思想还是不变的。
最重要的是Activity
   Activity类就类似于之前用过的JFrame类,一个Activity就是一个单独的幕,     
Activity中有若干个View(控件)对象,它是一个控件对象的“容器”、“载体”。
要创建Activity类就要继承android.app.Activity
每一个Activity都要在AndroidManifest.xml文件中注册,通过<activity>标签实现注册。
Activity的生命周期:
onCreate():当创建一个窗体时,就进入该方法,这个相当于程序的入口
onRestart():如果该Activity已经stop,当你想要再次打开时使用该方法
onStart():当界面出现时,就调用该方法
onPause():让当前Activity暂停
onStop():当另一个Activity创建时,覆盖当前窗体,就用到此方法
onDestory():整个Activity结束时,该方法被调用


登陆界面
1.创建自己的Activity类继承Activity
2.添加组件(按钮、文本框)
3.获取组建
4.按钮监听
5.跳转到第二个Activity

注:
1.每添加一个组件,就要给它一个id
2.每一个Activity都要在AndroidManifest.xml中注册
3.注意.xml中的嵌套

代码示例:
FirstActivity:
public class firstActivity extends Activity {
	//定义属性
	EditText edit_name,edit_pswd;
	
	/** Called when the activity is first created. 
	 * activity的入口,相当于main函数
	 * */ @Override
   
   
	 public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main);
			System.out.println("我的第一个手机程序");
			getView();
		}
        
      

		//用匿名内部类创建监听器对象
        OnClickListener listener=new OnClickListener()
        {
        	/**
        	 * 按钮被点击的方法
        	 */
        	public void onClick(View v)
        	{
        		//验证操作
        		int id=v.getId();
        		switch(id)
        		{
        		case R.id.btn_login:
        			System.out.println("edit_name="+edit_name.getText());
        		
        			//获取文本输入框中的内容
        			if("yezi".equals(edit_name.getText().toString()));
        			{
        			//创建intent对象,实现界面的跳转,intent相当于信使RNA
        			Intent intent=new Intent(firstActivity.this,secondActivity.class);
        			startActivity(intent);
        			}
//        			else{
//        				Toast.makeText(firstActivity.this,"您输入的用户名有误", 3).show();
//        			    }
        			break;
        		case R.id.btn_reset:
        			edit_name.setText("");
        			edit_pswd.setText("");
        			break;
        		}
        	}
        };
	
        	/**
        	 * 获取组建的方法
        	 */
        	public void getView()
        	{
        		//通过id找到组件对象
        		Button btn_login=(Button)findViewById(R.id.btn_login);
        		Button btn_reset=(Button)findViewById(R.id.btn_reset);
        		edit_name=(EditText)findViewById(R.id.edit_name);
        		edit_pswd=(EditText)findViewById(R.id.edit_pswd);
        		
        		//点击弹出提示信息
        		
        		btn_login.setOnClickListener(listener);
        		btn_reset.setOnClickListener(listener);
        	}

        
        
       
    }

SecondActivity:
/**
 * 第二个activity
 * @author syf
 *
 */
public class secondActivity extends Activity{
protected void onCreat(Bundle savedInstanceState)
{
	super.onCreate(savedInstanceState);
	setContentView(R.layout.second);
}
}


设置组件信息:
<!-- 总体垂直布局 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"        
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="用户登录"
    android:textSize="30px"
    android:gravity="center_horizontal"
    />
     <!-- 嵌套布局 水平居中-->
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:orientation="horizontal"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center_horizontal"
   	 	>
     <TextView  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="账户"
            />
     <EditText
	    android:layout_width="100px" 
	    android:layout_height="wrap_content" 
            android:id="@+id/edit_name"
	    />
     </LinearLayout>
   	 	 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:orientation="horizontal"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center_horizontal"
   	 	>
     <TextView  
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="密碼"
            />
     <EditText
            android:layout_width="100px" 
	    android:layout_height="wrap_content" 
            android:id="@+id/edit_pswd" 
	    />
     </LinearLayout>
  <!-- 按钮对象 -->
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:orientation="horizontal"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center_horizontal"
   	 	>
      <Button  
            android:layout_width="100px" 
            android:layout_height="wrap_content" 
	    android:text="登陆"
	    android:id="@+id/btn_login"
	    />
      <Button
            android:layout_width="100px" 
	    android:layout_height="wrap_content" 
	    android:text="重置"
            android:id="@+id/btn_reset"
	    />
      </LinearLayout>
</LinearLayout>
/>



画图

1.创建自己的Activity类,继承Activity
2.创建画板类,继承ImageView
3.监听
4.画线


注:
1.Bitmap:位图类,特别注意该类的对象要用其他方法获得,不能new,因为该类无构造方法
2.Canvas:画布,创建画布是要传入一个Bitmap的对象;类似于Graphics,注意它的方法
3.Paint:画笔类,画图必须要用画笔,可设置画笔的颜色、宽度等
4.onDraw()方法:类似于paint()方法,注意要在该方法中调用画位图的方法
5.监听用触摸事件onTouchEvent

代码示例:
MyView类:
/**
 * 创建自己的画图类,继承自ImageView
 * @author syf
 *
 */
public class MyView extends ImageView{
    //全局对象
	Bitmap map;
	Canvas c;
	Paint p; 
	
    //坐标
	float x1,y1,x2,y2;
	
	//构造方法
	public MyView(Context context,AttributeSet as)
	 {
		//调用父类中的构造方法
		super(context,as);
		
		//创建Bitmap,Canvas,Paint的对象
		
		//Bitmap的对象必须用其他方法获得
		map=Bitmap.createBitmap(300, 400, Config.ARGB_8888);
		
		//传入map
		c=new Canvas(map);
		
		p=new Paint();
		
		//设置颜色
		p.setColor(Color.WHITE);
		
		//设置宽度
		p.setStrokeWidth(5);
		
	  }
	
	/**
	 * 触摸事件
	 */
	public boolean onTouchEvent(MotionEvent e)
	{
		//获取坐标
		int action=e.getAction();
		
		switch(action)
		{
		case MotionEvent.ACTION_DOWN:
			x1=e.getX();
			y1=e.getY();
			 System.out.println("x1=="+x1+"y=="+y1); 
			
			break;
		case MotionEvent.ACTION_UP:
			x2=e.getX();
			y2=e.getY();
			
			invalidate();
			break;
			
		}
		return true;
	}
	
	/**
	 * 定义onDraw()方法
	 * 
	 */
	
	public void onDraw(Canvas canvas)
	{
		//调用父类中的方法
		super.onDraw(canvas);
		
		//画直线
		canvas.drawLine(x1, y1, x2, y2, p);
		
		//画位图
		canvas.drawBitmap(map, 0,0,null);
	}
}


自己的Activity类:
public class FirstActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


在Main.xml中设置MyView的信息
<cn.syf.draw89.MyView    
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id="@+id/image"
    android:background="#ff00ff"
/>