代码练习

本文介绍如何在Android应用中实现ListView组件,并展示了多种视图动画效果的代码实例,包括透明度、平移、旋转及缩放动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ListView

public class ListActivity extends AppCompatActivity {


    private ListView listView;
    ArrayList<HashMap<String,Object>> listItem;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        listView = (ListView)findViewById(R.id.listView);
        MyAdapter mAdapter = new MyAdapter(this);
        listView.setAdapter(mAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Log.i("LISTVIEW", "onItemClick:"+i);
            }
        });
    }


    private ArrayList<HashMap<String,Object>> getData() {
        ArrayList<HashMap<String,Object>> listItem =new ArrayList<HashMap<String, Object>>();
        for (int i = 0; i < 30; i++){
            HashMap<String,Object> map =new HashMap<String, Object>();
            map.put("ItemTitle","第"+i+"行");
            map.put("ItemText","这是第"+i+"行");
            listItem.add(map);
        }


        return listItem;
    }
    private class MyAdapter extends BaseAdapter {
       private LayoutInflater inflater;


        public MyAdapter (Context context){
            inflater =LayoutInflater.from(context);


        }


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


        @Override
        public Object getItem(int i) {
            return null;
        }


        @Override
        public long getItemId(int i) {
            return 0;
        }


        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder viewholder;
            Log.i("LISTVIEW", "getView   "+i+"   view");
            if (view == null){
                view = inflater.inflate(R.layout.item,null);
                viewholder =new ViewHolder();
                viewholder.title =(TextView)view.findViewById(R.id.textView3);
                viewholder.text =(TextView)view.findViewById(R.id.textView4);
                viewholder.btn =(Button)view.findViewById(R.id.button);
                view.setTag(viewholder);
            }else {
                viewholder =(ViewHolder)view.getTag();
            }
            viewholder.title.setText(getData().get(i).get("ItemTitle").toString());
            viewholder.text.setText(getData().get(i).get("ItemText").toString());
            viewholder.btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(ListActivity.this,"点击了按钮",Toast.LENGTH_SHORT).show();
                }
            });
            return view;
        }


    }


    public final class ViewHolder {
        TextView title;
        TextView text;
        Button   btn;
    }
}

注册界面

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="horizontal"  
  6.     android:stretchColumns="1" >  
  7.   
  8.     <TableRow>  
  9.   
  10.         <TextView  
  11.             android:id="@+id/t1"  
  12.             android:layout_width="match_parent"  
  13.             android:layout_height="wrap_content"  
  14.             android:text="用户名:"  
  15.             android:textSize="16sp" />  
  16.         <!-- selectAllOnFocus="true"  获取焦点而不是将光标移动为文本的开始位置或者末尾位置 -->  
  17.   
  18.         <EditText  
  19.             android:layout_width="match_parent"  
  20.             android:layout_height="wrap_content"  
  21.             android:hint="请填写登陆账号"  
  22.             android:selectAllOnFocus="true" />  
  23.     </TableRow>  
  24.   
  25.     <TableRow>  
  26.   
  27.         <TextView  
  28.             android:layout_width="match_parent"  
  29.             android:layout_height="wrap_content"  
  30.             android:text="密码:"  
  31.             android:textSize="16sp" />  
  32.   
  33.         <EditText  
  34.             android:layout_width="match_parent"  
  35.             android:layout_height="wrap_content"  
  36.             android:inputType="numberPassword" />  
  37.     </TableRow>  
  38.   
  39.     <TableRow>  
  40.   
  41.         <TextView  
  42.             android:layout_width="match_parent"  
  43.             android:layout_height="wrap_content"  
  44.             android:text="年龄:"  
  45.             android:textSize="16sp" />  
  46.   
  47.         <EditText  
  48.             android:layout_width="match_parent"  
  49.             android:layout_height="wrap_content"  
  50.             android:inputType="number"  
  51.             android:maxLength="2" />  
  52.     </TableRow>  
  53.   
  54.     <TableRow>  
  55.   
  56.         <TextView  
  57.             android:layout_width="match_parent"  
  58.             android:layout_height="wrap_content"  
  59.             android:text="出生日期:"  
  60.             android:textSize="16sp" />  
  61.   
  62.         <EditText  
  63.             android:layout_width="match_parent"  
  64.             android:layout_height="wrap_content"  
  65.             android:inputType="date" />  
  66.     </TableRow>  
  67.   
  68.     <TableRow>  
  69.   
  70.         <TextView  
  71.             android:layout_width="match_parent"  
  72.             android:layout_height="wrap_content"  
  73.             android:text="电话:"  
  74.             android:textSize="16sp" />  
  75.   
  76.         <EditText  
  77.             android:layout_width="match_parent"  
  78.             android:layout_height="wrap_content"  
  79.             android:inputType="phone"  
  80.             android:selectAllOnFocus="true" />  
  81.     </TableRow>  
  82.   
  83.     <Button  
  84.         android:layout_width="wrap_content"  
  85.         android:layout_height="wrap_content"  
  86.         android:text="注册:" />  
  87.   
  88. </TableLayout> 

View

  1. import android.view.View;  
  2. import android.view.animation.AlphaAnimation;  
  3. import android.view.animation.Animation;  
  4. import android.view.animation.Animation.AnimationListener;  
  5. import android.view.animation.AnimationSet;  
  6. import android.view.animation.LinearInterpolator;  
  7. import android.view.animation.RotateAnimation;  
  8. import android.view.animation.ScaleAnimation;  
  9. import android.view.animation.TranslateAnimation;  
  10.   
  11.   

  12. public class AnimationEffect  
  13. {  
  14.  
  15.     public static void AddAlphaAni(View view)  
  16.     {  
  17.         AddAlphaAni(view, 011000, Animation.REVERSE, Animation.INFINITE);  
  18.     }  
  19.       
  20.  
  21.     public static void AddAlphaAni(View view, float fromAlpha, float toAlpha, long durationMillis, int repeatMode, int repeatCount)  
  22.     {  
  23.         AlphaAnimation alphaAni = new AlphaAnimation(fromAlpha, toAlpha);  
  24.         alphaAni.setDuration(durationMillis);   
  25.         alphaAni.setRepeatMode(repeatMode);     
  26.         alphaAni.setRepeatCount(repeatCount);   
  27.           
  28.         view.startAnimation(alphaAni);  
  29.     }  
  30.       
  31.   
  32.     public static void setTransAni(View view, int x0, int x1, int y0, int y1, long durationMillis)  
  33.     {  
  34.         TranslateAnimation transAni = new TranslateAnimation(x0, x1, y0, y1);  
  35.         transAni.setDuration(durationMillis);  
  36.         transAni.setRepeatMode(Animation.REVERSE);  
  37.         transAni.setRepeatCount(Animation.INFINITE);  
  38.           
  39.         view.startAnimation(transAni);  
  40.     }  
  41.       
  42.   
  43.     public static void setRotateAni(View view, float fromDegrees, float toDegrees, long time)  
  44.     {  
  45.         setRotateAni(view, fromDegrees, toDegrees, time, Animation.REVERSE, Animation.INFINITE, true);  
  46.     }  
  47.       
  48.  
  49.     public static void setRotateAni(View view, float fromDegrees, float toDegrees, long durationMillis, int repeatModes, int repeatCount, boolean linear)  
  50.     {  
  51.         RotateAnimation rotateAni = new RotateAnimation(fromDegrees, toDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);  
  52.         rotateAni.setDuration(durationMillis);  
  53.         rotateAni.setRepeatMode(repeatModes);  
  54.         rotateAni.setRepeatCount(repeatCount);  
  55.           
  56.         if(linear) rotateAni.setInterpolator(new LinearInterpolator()); 
  57.           
  58.         view.startAnimation(rotateAni);  
  59.     }  
  60.       
  61.  
  62.     public static void setScaleAni(View V, float fromScale, float toScale, long ANITIME)  
  63.     {  
  64.         AnimationSet aniSet = new AnimationSet(true);  
  65.        
  66.         ScaleAnimation scaleAni = new ScaleAnimation(fromScale, toScale, fromScale, toScale, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);  
  67.         scaleAni.setDuration(ANITIME);   
  68.         aniSet.addAnimation(scaleAni);  
  69.           
  70.         V.startAnimation(aniSet);       
  71.     }  
  72.       
  73.       
  74.     public static void setLightExpendAni(View V)  
  75.     {  
  76.         AnimationSet aniSet = new AnimationSet(true);  
  77.         final int ANITIME = 1200;  
  78.           
  79.         /  
  80.         ScaleAnimation scaleAni = new ScaleAnimation(0.98f, 1.1f, 0.98f, 1.24f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);  
  81.         scaleAni.setDuration(ANITIME);                
  82.         scaleAni.setRepeatMode(Animation.RESTART);  
  83.         scaleAni.setRepeatCount(Animation.INFINITE); 
  84.         aniSet.addAnimation(scaleAni);    
  85.           
  86.          
  87.         AlphaAnimation alphaAni = new AlphaAnimation(1f, 0.05f);  
  88.         alphaAni.setDuration(ANITIME);                
  89.         alphaAni.setRepeatMode(Animation.RESTART);  
  90.         alphaAni.setRepeatCount(Animation.INFINITE);
  91.         aniSet.addAnimation(alphaAni);   
  92.           
  93.         V.startAnimation(aniSet);         
  94.     }  
  95.       
  96.       
  97.     public static void setLightAni(final View view)  
  98.     {  
  99.         AnimationListener listenser = new AnimationListener()  
  100.         {  
  101.             @Override  
  102.             public void onAnimationEnd(Animation animation)  
  103.             {  
  104.                 view.clearAnimation();  
  105.                 setRotateAni(view, 363996110000, Animation.RESTART, Animation.INFINITE, true);  
  106.             }  
  107.               
  108.             @Override  
  109.             public void onAnimationRepeat(Animation animation)  
  110.             {}  
  111.               
  112.             @Override  
  113.             public void onAnimationStart(Animation animation)  
  114.             {}  
  115.         };  
  116.           
  117.         AnimationSet set = new AnimationSet(true);  
  118.           
  119.           
  120.         AlphaAnimation alphaAni = new AlphaAnimation(0.0f, 1f);  
  121.         alphaAni.setDuration(1000);  
  122.         set.addAnimation(alphaAni);  
  123.           
  124.          
  125.         RotateAnimation rotateAni = new RotateAnimation(036, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);  
  126.         rotateAni.setDuration(1000);  
  127.         set.addAnimation(rotateAni);  
  128.           
  129.        
  130.         ScaleAnimation scaleAni = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);  
  131.         scaleAni.setDuration(1000);  
  132.         scaleAni.setAnimationListener(listenser);  
  133.         set.addAnimation(scaleAni);  
  134.           
  135.         view.startAnimation(set);  
  136.     }  

小代码合集

1:查看是否有存储卡插入
String status=Environment.getExternalStorageState();
if(status.equals(Enviroment.MEDIA_MOUNTED)){
   说明有SD卡插入
}


2:让某个Activity透明
OnCreate 中不设Layout
this.setTheme(R.style.Theme_Transparent);
以下是 Theme_Transparent的定义(注意transparent_bg是一副透明的图片)


3:在屏幕元素中设置句柄
使用Activity.findViewById来取得屏幕上的元素的句柄. 使用该句柄您可以设置或获取任何该对象外露的值.
TextView msgTextView = (TextView)findViewById(R.id.msg);
   msgTextView.setText(R.string.push_me);


4:发送短信


            String body=”this is mms demo”;


           Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”smsto”, number, null));
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);
            startActivity(mmsintent);


   5:发送彩信


           StringBuilder sb = new StringBuilder();


            sb.append(”file://”);


            sb.append(fd.getAbsoluteFile());


            Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”mmsto”, number, null));
            // Below extra datas are all optional.
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);


            startActivity(intent);


7:发送Mail


             mime = “img/jpg”;
            shareIntent.setDataAndType(Uri.fromFile(fd), mime);
            shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fd));
            shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);


            shareIntent.putExtra(Intent.EXTRA_TEXT, body);


8:注册一个 BroadcastReceiver


registerReceiver(mMasterResetReciever, new IntentFilter(”oms.action.MASTERRESET”));


private BroadcastReceiver mMasterResetReciever = new BroadcastReceiver() {


        public void onReceive(Context context, Intent intent){
            String action = intent.getAction();
            if(”oms.action.MASTERRESET”.equals(action)){
                RecoverDefaultConfig();
            }
        }


    };


9:定义ContentObserver,监听某个数据表


private ContentObserver mDownloadsObserver = new DownloadsChangeObserver(Downloads.CONTENT_URI);


private class DownloadsChangeObserver extends ContentObserver {
        public DownloadsChangeObserver(Uri uri) {
            super(new Handler());


        }


        @Override
        public void onChange(boolean selfChange) {}
        }




10:获得 手机UA


public String getUserAgent(){
    String user_agent = ProductProperties.get(ProductProperties.USER_AGENT_KEY, null);
            return user_agent;
    }


11:清空手机上Cookie


CookieSyncManager.createInstance(getApplicationContext());
        CookieManager.getInstance().removeAllCookie();


12:建立GPRS 连接


   //Dial the GPRS link.
    private boolean openDataConnection() {
        // Set up data connection.
        DataConnection conn = DataConnection.getInstance();


            if (connectMode == 0) {
                ret = conn.openConnection(mContext, “cmwap”, “cmwap”, “cmwap”);
            } else {
                ret = conn.openConnection(mContext, “cmnet”, “”, “”);
            }


    }


13:PreferenceActivity 用法


public class Setting extends PreferenceActivity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }





Setting.xml:


            android:key=”seting2″
            android:title=”@string/seting2″
            android:summary=”@string/seting2″/>


            android:key=”seting1″
            android:title=”@string/seting1″
            android:summaryOff=”@string/seting1summaryOff”
            android:summaryOn=”@stringseting1summaryOff”/>


14:通过 HttpClient从指定server获取数据


             DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpGet method = new HttpGet(“http://www.baidu.com/1.html”);
            HttpResponse resp;
            Reader reader = null;
            try {
                // AllClientPNames.TIMEOUT
                HttpParams params = new BasicHttpParams();
                params.setIntParameter(AllClientPNames.CONNECTION_TIMEOUT, 10000);
                httpClient.setParams(params);
                resp = httpClient.execute(method);
                int status = resp.getStatusLine().getStatusCode();


                if (status != HttpStatus.SC_OK) return false;


                // HttpStatus.SC_OK;
                return true;
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if (reader != null) try {
                    reader.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }


15:显示toast
Toast.makeText(this._getApplicationContext(), R.string._item, Toast.LENGTH_SHORT).show();


16:在当前Activity中启动另外一个Activity
startActivity(new Intent(this,目标Activity.class));


17:从当前ContentView从查找控件
(Button)findViewById(R.id.btnAbout)
 R.id.btnAbout指控件id。


18:获取屏幕宽高
DisplayMetrics dm = new DisplayMetrics();
//获取窗口属性
 getWindowManager().getDefaultDisplay().getMetrics(dm);
 int screenWidth = dm.widthPixels;//320
 int screenHeight = dm.heightPixels;//480


19:无标题栏、全屏
//无标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  WindowManager.LayoutParams.FLAG_FULLSCREEN);
注意在setContentView()之前调用,否则无效。


20注册activity
所有用到的Activity都必须在AndroidManifest.xml中注册,否则会报空指针错误。
如:,注意是包名+类名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值