当前位置: 首页 > 知识库问答 >
问题:

android中文本文件的视图类似于android中图像的视图

费凯康
2023-03-14

我想制作一个应用程序,以网格模式显示文档、pdf、txt等文本文件,就像ImageView显示图像一样。在android中是否有这些文件的视图。代码如下所示,在此我可以查看网格中的图像,但不能查看文档文件。

 public class MainActivity extends Activity implements  OnItemClickListener{

public class ImageAdapter extends BaseAdapter {

 private Context mContext;
 ArrayList<String> itemList = new ArrayList<String>();

 public ImageAdapter(Context c) {
  mContext = c; 
 }

 void add(String path){
  itemList.add(path); 
 }

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

 @Override
 public Object getItem(int arg0) {
 // TODO Auto-generated method stub
 return null;
 }

 @Override
 public long getItemId(int position) {
 // TODO Auto-generated method stub
 return 0;
}

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  ImageView imageView;
     if (convertView == null) {  // if it's not recycled, initialize some attributes
         imageView = new ImageView(mContext);
         imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
         imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
         imageView.setPadding(3, 3, 3, 3);
     } else {
         imageView = (ImageView) convertView;
     }

     Bitmap bm = decodeSampledBitmapFromUri(itemList.get(position), 100, 100);

     imageView.setImageBitmap(bm);
     return imageView;
 }

 public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth, int reqHeight) {

  Bitmap bm = null;
 // First decode with inJustDecodeBounds=true to check dimensions
 final BitmapFactory.Options options = new BitmapFactory.Options();
 options.inJustDecodeBounds = true;
 BitmapFactory.decodeFile(path, options);

 // Calculate inSampleSize
 options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

 // Decode bitmap with inSampleSize set
 options.inJustDecodeBounds = false;
 bm = BitmapFactory.decodeFile(path, options); 

 return bm;   
}

public int calculateInSampleSize(

 BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
 final int height = options.outHeight;
 final int width = options.outWidth;
 int inSampleSize = 1;

 if (height > reqHeight || width > reqWidth) {
  if (width > height) {
  inSampleSize = Math.round((float)height / (float)reqHeight);    
 } else {
  inSampleSize = Math.round((float)width / (float)reqWidth);    
 }   
 }

 return inSampleSize;    
 }

 }

 ImageAdapter myImageAdapter;

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GridView gridview = (GridView) findViewById(R.id.gridview);
    myImageAdapter = new ImageAdapter(this);
    gridview.setAdapter(myImageAdapter);
    gridview.setOnItemClickListener(this);
    String ExternalStorageDirectoryPath = Environment
      .getExternalStorageDirectory()
      .getAbsolutePath();

    String targetPath = ExternalStorageDirectoryPath + "/img/";

    Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show();
    File targetDirector = new File(targetPath);

    File[] files = targetDirector.listFiles();
    for (File file : files){
    myImageAdapter.add(file.getAbsolutePath());


     } 
    }

  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

 }

}

共有1个答案

厉文栋
2023-03-14

使用方式如下:

                      if(filetype.toString().equals(".pdf"))
                      {
                              //place your pdf image
                          imageview= (ImageView)findViewById(R.id.imageView);
                          Drawable res = getResources().getDrawable(imageResource);
                          imageView.setImageDrawable(res);
                      }

                      else if(filetype.toString().equals(".docs"))
                      {
                            //place your docs image
                          imageview= (ImageView)findViewById(R.id.imageView);
                          Drawable res = getResources().getDrawable(imageResource);
                          imageView.setImageDrawable(res); 
                      }

                      else if(filetype.toString().equals(".txt "))
                      {
                            //place your txt image
                          imageview= (ImageView)findViewById(R.id.imageView);
                          Drawable res = getResources().getDrawable(imageResource);
                          imageView.setImageDrawable(res);
                      }

如何在android中动态设置drawable中的图像?。希望这对你有帮助

 类似资料:
  • 我正在尝试做一个小应用程序,只显示图片从一个特定的文件夹在一个图库视图。我找到了几个例子,但每一个都只能显示一个图像。我将在下面发布的这个例子是一个很好的帮助,它做几乎完全是我想要它做的,我只需要改变它显示图像从特定的文件夹,而不是所有的文件夹。我花了几天的时间来尝试,但我似乎没有添加正确的代码。我觉得这是一件很简单的事情,我也错过了。如有任何帮助,我们将不胜感激!

  • 问题内容: 我正在尝试从特定的URL获取图像,但会抛出异常。如果尝试从浏览器打开URL,则可以看到图像。请帮忙。下面是我的代码。谢谢。 问题答案: 我尝试这个,它的工作正常。谢谢。

  • 我刚刚编写了一个仅带有LinearLayout的简单Android应用程序。我将此LinearLayout用作类的属性和方法的本地对象(例如在onCreate方法中)。 第一种情况:作为财产的线性布局 第二种情况:作为方法对象的线性布局 在这两种情况下,都没有错误。然而,当我在模拟器或设备上运行时,第一个案例出现了如下错误。为什么?我认为这个问题是由方法引起的。在调用onCreate方法之前,该方

  • 我有一个android布局,它有一个,里面有很多元素。在的底部有一个,然后由适配器填充。 我遇到的问题是,android将从中排除,因为已经具有可滚动的功能。我希望与内容一样长,并且主滚动视图是可滚动的。 我怎样才能达到这种行为呢? 下面是我的主要布局: 然后以编程方式将组件添加到具有ID:的linearlayour中。下面是加载到LinearLayout中的一个视图。就是这个给我卷轴带来麻烦的。

  • 问题内容: 如图所示,我有一个单击事件连接到我的列表视图。 我需要根据他们单击的列表项将字符串参数传递给新的意图。我要传递的值在名为txt_Genus的列表项中。如何从列表项中获取该值以传递给意图?请不要注意我的实验,哈哈。 问题答案: 这应该做。 然后将其放入意图附加功能中,我想您已经知道这一点。 编辑; 在您的新活动中,您将访问该意图并获得附加包。然后,您可以访问上一个活动中意图放置的任何内容

  • 我的问题是两者都是两个独立的文本视图“你好”和“世界”第一个文本视图有32个字符限制。如果文本超过限制,我如何使它包装内容,并使“世界”保持在第一行? 下面是它目前的表现。 下面是我试图实现的代码。我试着写min_ems、max_ems和ems,但在平板电脑上看起来不太好。